[STATEMENT]
lemma wt_append [simp]:
  "wt_method E list_name [Class list_name] Void 3 0 append_ins
             [(Suc 0, 2, NullPointer, 7, 0)] \<phi>\<^sub>a"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. wt_method E list_name [Class list_name] Void 3 0 append_ins [(Suc 0, 2, NullPointer, 7, 0)] \<phi>\<^sub>a
[PROOF STEP]
(*<*)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. wt_method E list_name [Class list_name] Void 3 0 append_ins [(Suc 0, 2, NullPointer, 7, 0)] \<phi>\<^sub>a
[PROOF STEP]
apply (simp add: wt_method_def wt_start_def wt_instr_def)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. append_ins \<noteq> [] \<and> length \<phi>\<^sub>a = length append_ins \<and> (\<exists>b. \<phi>\<^sub>a ! 0 = \<lfloor>([], b)\<rfloor> \<and> (\<exists>z zs. b = z # zs \<and> E \<turnstile> OK (Class list_name) \<le>\<^sub>\<top> z \<and> (\<exists>z. zs = [z] \<and> E \<turnstile> OK (Class list_name) \<le>\<^sub>\<top> z))) \<and> (\<forall>pc a b. \<phi>\<^sub>a ! pc = \<lfloor>(a, b)\<rfloor> \<longrightarrow> pc < length append_ins \<longrightarrow> app\<^sub>i (append_ins ! pc, E, pc, 3, Void, a, b) \<and> (\<forall>(f, t, C, ab)\<in>set (relevant_entries E (append_ins ! pc) pc [(Suc 0, 2, NullPointer, 7, 0)]). (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>(pc', \<tau>')\<in>(\<lambda>pc'. (pc', \<lfloor>eff\<^sub>i (append_ins ! pc, E, a, b)\<rfloor>)) ` set (succs (append_ins ! pc) (a, b) pc) \<union> (\<lambda>(f, t, C, h, d). (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E (append_ins ! pc) pc [(Suc 0, 2, NullPointer, 7, 0)]). pc' < length append_ins) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>pc'. (pc', \<lfloor>eff\<^sub>i (append_ins ! pc, E, a, b)\<rfloor>)) ` set (succs (append_ins ! pc) (a, b) pc) \<longrightarrow> E \<turnstile> ba \<le>' \<phi>\<^sub>a ! aa) \<and> ((aa, ba) \<in> (\<lambda>(f, t, C, h, d). (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E (append_ins ! pc) pc [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' \<phi>\<^sub>a ! aa)))
[PROOF STEP]
apply (simp add: append_ins_def phi_append_def)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>pc a b. [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! pc = \<lfloor>(a, b)\<rfloor> \<longrightarrow> pc < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc, E, pc, 3, Void, a, b) \<and> (\<forall>(f, t, C, ab)\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) pc [(Suc 0, 2, NullPointer, 7, 0)]). (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>(pc', \<tau>')\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc, E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) (a, b) pc) \<union> (\<lambda>(f, t, C, h, d). (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) pc [(Suc 0, 2, NullPointer, 7, 0)]). pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc, E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) (a, b) pc) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>(f, t, C, h, d). (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) pc [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
[PROOF STEP]
apply clarify
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>pc a b. \<lbrakk>[\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! pc = \<lfloor>(a, b)\<rfloor>; pc < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))\<rbrakk> \<Longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc, E, pc, 3, Void, a, b) \<and> (\<forall>(f, t, C, ab)\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) pc [(Suc 0, 2, NullPointer, 7, 0)]). (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>(pc', \<tau>')\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc, E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) (a, b) pc) \<union> (\<lambda>(f, t, C, h, d). (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) pc [(Suc 0, 2, NullPointer, 7, 0)]). pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc, E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) (a, b) pc) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>(f, t, C, h, d). (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) pc [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
[PROOF STEP]
apply (drule sym)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>pc a b. \<lbrakk>pc < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))); \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! pc\<rbrakk> \<Longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc, E, pc, 3, Void, a, b) \<and> (\<forall>(f, t, C, ab)\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) pc [(Suc 0, 2, NullPointer, 7, 0)]). (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>(pc', \<tau>')\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc, E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) (a, b) pc) \<union> (\<lambda>(f, t, C, h, d). (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) pc [(Suc 0, 2, NullPointer, 7, 0)]). pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc, E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) (a, b) pc) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>(f, t, C, h, d). (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) pc [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
[PROOF STEP]
apply (erule_tac P="x = y" for x y in rev_mp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>pc a b. pc < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<Longrightarrow> \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! pc \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc, E, pc, 3, Void, a, b) \<and> (\<forall>(f, t, C, ab)\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) pc [(Suc 0, 2, NullPointer, 7, 0)]). (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>(pc', \<tau>')\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc, E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) (a, b) pc) \<union> (\<lambda>(f, t, C, h, d). (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) pc [(Suc 0, 2, NullPointer, 7, 0)]). pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc, E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) (a, b) pc) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>(f, t, C, h, d). (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! pc) pc [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
[PROOF STEP]
apply (elim pc_end pc_next pc_0)
[PROOF STATE]
proof (prove)
goal (16 subgoals):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! 0 \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! 0, E, 0, 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! 0) 0 [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! 0, E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! 0) (a, b) 0) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! 0) 0 [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! 0, E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! 0) (a, b) 0) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! 0) 0 [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 2. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc 0 \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0, E, Suc 0, 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0) (Suc 0) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0, E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0) (a, b) (Suc 0)) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0) (Suc 0) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0, E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0) (a, b) (Suc 0)) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0) (Suc 0) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 3. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc 0) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0), E, Suc (Suc 0), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0)) (Suc (Suc 0)) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0)) (a, b) (Suc (Suc 0))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0)) (Suc (Suc 0)) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0)) (a, b) (Suc (Suc 0))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0)) (Suc (Suc 0)) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 4. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc 0)) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0)), E, Suc (Suc (Suc 0)), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (Suc (Suc (Suc 0))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0)), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (a, b) (Suc (Suc (Suc 0)))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (Suc (Suc (Suc 0))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0)), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (a, b) (Suc (Suc (Suc 0)))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (Suc (Suc (Suc 0))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 5. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc 0))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0))), E, Suc (Suc (Suc (Suc 0))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (Suc (Suc (Suc (Suc 0)))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (a, b) (Suc (Suc (Suc (Suc 0))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (Suc (Suc (Suc (Suc 0)))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (a, b) (Suc (Suc (Suc (Suc 0))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (Suc (Suc (Suc (Suc 0)))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 6. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc 0)))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, Suc (Suc (Suc (Suc (Suc 0)))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (a, b) (Suc (Suc (Suc (Suc (Suc 0)))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (a, b) (Suc (Suc (Suc (Suc (Suc 0)))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 7. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, Suc (Suc (Suc (Suc (Suc (Suc 0))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 8. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 9. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 10. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
A total of 16 subgoals...
[PROOF STEP]
apply (simp add: relevant_entries_def is_relevant_entry_def)
[PROOF STATE]
proof (prove)
goal (15 subgoals):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc 0 \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0, E, Suc 0, 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0) (Suc 0) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0, E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0) (a, b) (Suc 0)) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0) (Suc 0) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0, E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0) (a, b) (Suc 0)) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc 0) (Suc 0) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 2. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc 0) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0), E, Suc (Suc 0), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0)) (Suc (Suc 0)) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0)) (a, b) (Suc (Suc 0))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0)) (Suc (Suc 0)) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0)) (a, b) (Suc (Suc 0))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0)) (Suc (Suc 0)) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 3. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc 0)) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0)), E, Suc (Suc (Suc 0)), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (Suc (Suc (Suc 0))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0)), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (a, b) (Suc (Suc (Suc 0)))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (Suc (Suc (Suc 0))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0)), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (a, b) (Suc (Suc (Suc 0)))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (Suc (Suc (Suc 0))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 4. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc 0))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0))), E, Suc (Suc (Suc (Suc 0))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (Suc (Suc (Suc (Suc 0)))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (a, b) (Suc (Suc (Suc (Suc 0))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (Suc (Suc (Suc (Suc 0)))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (a, b) (Suc (Suc (Suc (Suc 0))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (Suc (Suc (Suc (Suc 0)))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 5. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc 0)))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, Suc (Suc (Suc (Suc (Suc 0)))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (a, b) (Suc (Suc (Suc (Suc (Suc 0)))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (a, b) (Suc (Suc (Suc (Suc (Suc 0)))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 6. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, Suc (Suc (Suc (Suc (Suc (Suc 0))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 7. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 8. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 9. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 10. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
A total of 15 subgoals...
[PROOF STEP]
apply (fastforce simp add: matches_ex_entry_def subcls1
    relevant_entries_def is_relevant_entry_def sees_field_def list_class_def
    distinct_classes distinct_fields intro: Fields.intros)
[PROOF STATE]
proof (prove)
goal (14 subgoals):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc 0) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0), E, Suc (Suc 0), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0)) (Suc (Suc 0)) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0)) (a, b) (Suc (Suc 0))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0)) (Suc (Suc 0)) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0)) (a, b) (Suc (Suc 0))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc 0)) (Suc (Suc 0)) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 2. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc 0)) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0)), E, Suc (Suc (Suc 0)), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (Suc (Suc (Suc 0))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0)), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (a, b) (Suc (Suc (Suc 0)))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (Suc (Suc (Suc 0))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0)), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (a, b) (Suc (Suc (Suc 0)))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (Suc (Suc (Suc 0))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 3. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc 0))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0))), E, Suc (Suc (Suc (Suc 0))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (Suc (Suc (Suc (Suc 0)))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (a, b) (Suc (Suc (Suc (Suc 0))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (Suc (Suc (Suc (Suc 0)))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (a, b) (Suc (Suc (Suc (Suc 0))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (Suc (Suc (Suc (Suc 0)))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 4. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc 0)))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, Suc (Suc (Suc (Suc (Suc 0)))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (a, b) (Suc (Suc (Suc (Suc (Suc 0)))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (a, b) (Suc (Suc (Suc (Suc (Suc 0)))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 5. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, Suc (Suc (Suc (Suc (Suc (Suc 0))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 6. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 7. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 8. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 9. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 10. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
A total of 14 subgoals...
[PROOF STEP]
apply (simp add: relevant_entries_def is_relevant_entry_def)
[PROOF STATE]
proof (prove)
goal (13 subgoals):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc 0)) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0)), E, Suc (Suc (Suc 0)), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (Suc (Suc (Suc 0))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0)), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (a, b) (Suc (Suc (Suc 0)))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (Suc (Suc (Suc 0))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0)), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (a, b) (Suc (Suc (Suc 0)))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc 0))) (Suc (Suc (Suc 0))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 2. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc 0))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0))), E, Suc (Suc (Suc (Suc 0))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (Suc (Suc (Suc (Suc 0)))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (a, b) (Suc (Suc (Suc (Suc 0))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (Suc (Suc (Suc (Suc 0)))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (a, b) (Suc (Suc (Suc (Suc 0))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (Suc (Suc (Suc (Suc 0)))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 3. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc 0)))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, Suc (Suc (Suc (Suc (Suc 0)))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (a, b) (Suc (Suc (Suc (Suc (Suc 0)))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (a, b) (Suc (Suc (Suc (Suc (Suc 0)))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 4. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, Suc (Suc (Suc (Suc (Suc (Suc 0))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 5. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 6. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 7. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 8. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 9. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 10. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
A total of 13 subgoals...
[PROOF STEP]
apply (fastforce simp add:
    relevant_entries_def is_relevant_entry_def sees_field_def list_class_def
    distinct_classes distinct_fields intro: Fields.intros)
[PROOF STATE]
proof (prove)
goal (12 subgoals):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc 0))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0))), E, Suc (Suc (Suc (Suc 0))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (Suc (Suc (Suc (Suc 0)))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (a, b) (Suc (Suc (Suc (Suc 0))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (Suc (Suc (Suc (Suc 0)))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (a, b) (Suc (Suc (Suc (Suc 0))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc 0)))) (Suc (Suc (Suc (Suc 0)))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 2. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc 0)))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, Suc (Suc (Suc (Suc (Suc 0)))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (a, b) (Suc (Suc (Suc (Suc (Suc 0)))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (a, b) (Suc (Suc (Suc (Suc (Suc 0)))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 3. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, Suc (Suc (Suc (Suc (Suc (Suc 0))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 4. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 5. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 6. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 7. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 8. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 9. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 10. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
A total of 12 subgoals...
[PROOF STEP]
apply (simp add: relevant_entries_def is_relevant_entry_def)
[PROOF STATE]
proof (prove)
goal (11 subgoals):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc 0)))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, Suc (Suc (Suc (Suc (Suc 0)))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (a, b) (Suc (Suc (Suc (Suc (Suc 0)))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0)))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (a, b) (Suc (Suc (Suc (Suc (Suc 0)))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc 0))))) (Suc (Suc (Suc (Suc (Suc 0))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 2. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, Suc (Suc (Suc (Suc (Suc (Suc 0))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 3. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 4. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 5. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 6. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 7. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 8. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 9. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 10. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
A total of 11 subgoals...
[PROOF STEP]
apply (simp add: relevant_entries_def is_relevant_entry_def)
[PROOF STATE]
proof (prove)
goal (10 subgoals):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, Suc (Suc (Suc (Suc (Suc (Suc 0))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc 0)))))) (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 2. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 3. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 4. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 5. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 6. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 7. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 8. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 9. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 10. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
[PROOF STEP]
apply (fastforce simp add: relevant_entries_def is_relevant_entry_def subcls1)
[PROOF STATE]
proof (prove)
goal (9 subgoals):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 2. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 3. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 4. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 5. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 6. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 7. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 8. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 9. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
[PROOF STEP]
apply (simp add: relevant_entries_def is_relevant_entry_def)
[PROOF STATE]
proof (prove)
goal (8 subgoals):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 2. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 3. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 4. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 5. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 6. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 7. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 8. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
[PROOF STEP]
apply (simp add: relevant_entries_def is_relevant_entry_def)
[PROOF STATE]
proof (prove)
goal (7 subgoals):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 2. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 3. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 4. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 5. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 6. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 7. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
[PROOF STEP]
apply (simp add: relevant_entries_def is_relevant_entry_def)
[PROOF STATE]
proof (prove)
goal (6 subgoals):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 2. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 3. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 4. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 5. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 6. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
[PROOF STEP]
apply (fastforce simp add:
    relevant_entries_def is_relevant_entry_def sees_field_def list_class_def
    distinct_classes distinct_fields intro: Fields.intros)
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 2. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 3. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 4. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 5. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
[PROOF STEP]
apply (simp add: relevant_entries_def is_relevant_entry_def)
[PROOF STATE]
proof (prove)
goal (4 subgoals):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 2. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 3. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 4. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
[PROOF STEP]
apply (simp add: relevant_entries_def is_relevant_entry_def)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 2. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 3. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
[PROOF STEP]
apply (simp add: relevant_entries_def is_relevant_entry_def)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
 2. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
[PROOF STEP]
apply (fastforce simp add:
    relevant_entries_def is_relevant_entry_def list_class_def
    distinct_classes Method_def intro: Methods.intros)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>pc a b. \<lfloor>(a, b)\<rfloor> = [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))) \<longrightarrow> app\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), 3, Void, a, b) \<and> (\<forall>b\<in>set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case b of (f, t, C, ab) \<Rightarrow> (\<exists>a aa b. class E C = \<lfloor>(a, aa, b)\<rfloor>) \<and> (case ab of (h, d) \<Rightarrow> d \<le> length a \<and> d < 3)) \<and> (\<forall>a\<in>(\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<union> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]). case a of (pc', \<tau>') \<Rightarrow> pc' < Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<and> (\<forall>aa ba. ((aa, ba) \<in> (\<lambda>x. (x, \<lfloor>eff\<^sub>i ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))), E, a, b)\<rfloor>)) ` set (succs ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (a, b) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0)))))))))))))))) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa) \<and> ((aa, ba) \<in> (\<lambda>c. case c of (f, t, C, h, d) \<Rightarrow> (h, \<lfloor>(Class C # drop (length a - d) a, b)\<rfloor>)) ` set (relevant_entries E ([Load 0, Getfield next_name list_name, Load 0, Getfield next_name list_name, Push Null, CmpEq, IfFalse 7, Pop, Load 0, Load (Suc 0), Putfield next_name list_name, Push Unit, Return, Load (Suc 0), Invoke append_name (Suc 0), Return] ! Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc 0))))))))))))))) [(Suc 0, 2, NullPointer, 7, 0)]) \<longrightarrow> E \<turnstile> ba \<le>' [\<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([NT, Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Boolean, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class Object], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Class list_name, Class list_name], [OK (Class list_name), OK (Class list_name)])\<rfloor>, \<lfloor>([Void], [OK (Class list_name), OK (Class list_name)])\<rfloor>] ! aa))
[PROOF STEP]
apply (simp add: relevant_entries_def is_relevant_entry_def)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done