CONSEQ: fixes b :: "bool"   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 C :: "Class"   and m :: "Method"   and l :: "int"   and AA :: "(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 BB :: "(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"   and II :: "(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 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 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"   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" assumes "(b, G, C, m, l, AA, BB, II) \<in> SP_Judgement"   and "\<forall>s0 s. A s0 s \<longrightarrow> AA s0 s"   and "\<forall>s0 s t. BB s0 s t \<longrightarrow> B s0 s t"   and "\<forall>s0 s k. II s0 s k \<longrightarrow> I s0 s k" shows "(b, G, C, m, l, A, B, I) \<in> SP_Judgement"