INSTR: fixes C :: "Class"   and m :: "Method"   and M :: "Var list \<times> (int \<times> Instr) list \<times> int"   and l :: "int"   and ins :: "Instr"   and Mspec :: "(Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<times> Val \<Rightarrow> bool"   and Minv :: "(Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> bool"   and Anno :: "(int \<times> ((Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> Val list \<times> (Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> bool)) list"   and A :: "(Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> Val list \<times> (Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> bool"   and I :: "(Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> Val list \<times> (Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> bool"   and c :: "Val"   and x :: "Var"   and f :: "Val \<Rightarrow> Val \<Rightarrow> Val"   and g :: "Val \<Rightarrow> Val"   and d :: "Class"   and F :: "Field"   and G :: "((Class \<times> Method \<times> int) \<times> ((Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> Val list \<times> (Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> bool) \<times> ((Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> Val list \<times> (Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<times> Val \<Rightarrow> bool) \<times> ((Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> Val list \<times> (Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> bool)) list"   and B :: "(Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> Val list \<times> (Var \<times> Val) list \<times> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<Rightarrow> (Addr \<times> Class \<times> (Field \<times> Val) list) list \<times> Val \<Rightarrow> bool" assumes "mbody_is C m M"   and "get_ins M l = Some ins"   and "MST\<down>(C, m) = Some (Mspec, Minv, Anno)"   and "\<forall>Q. Anno\<down>l = Some Q \<longrightarrow> (\<forall>s0 s. A s0 s \<longrightarrow> Q s0 s)"   and "\<forall>s0 s. A s0 s \<longrightarrow> I s0 s (heap s)"   and "ins \<in> {const c, dup, pop, swap, load x, store x, binop f, unop g, new d, getfield d F, putfield d F, checkcast d}"   and "G \<rhd> \<langle> SP_pre M l A \<rangle> C,m,(l + 1) \<langle> SP_post M l B \<rangle> SP_inv M l I" shows "G \<rhd> \<lbrace> A \<rbrace> C,m,l \<lbrace> B \<rbrace> I"