cases: fixes P :: "(char list list \<times> char list exp) prog"   and h :: "heap"   and sh :: "sheap"   and a1 :: "char list \<Rightarrow> ty option"   and a2 :: "char list exp"   and a3 :: "ty" assumes "P,a1,h,sh \<turnstile> a2 : a3" obtains C :: "char list" and E :: "char list \<Rightarrow> ty option" where "a1 = Ea__" and "a2 = new C__" and "a3 = Class C__" and "is_class P C__"   | E :: "char list \<Rightarrow> ty option" and e :: "char list exp" and T :: "ty" and C :: "char list" where "a1 = Eb__" and "a2 = Cast Ca__ ea__" and "a3 = Class Ca__" and "P,Eb__,h,sh \<turnstile> ea__ : Ta__" and "is_refT Ta__" and "is_class P Ca__"   | v :: "val" and T :: "ty" and E :: "char list \<Rightarrow> ty option" where "a1 = Ec__" and "a2 = Val v" and "a3 = Tb__" and "typeof\<^bsub>h\<^esub> v = \<lfloor>Tb__\<rfloor>"   | E :: "char list \<Rightarrow> ty option" and V :: "char list" and T :: "ty" where "a1 = Ed__" and "a2 = Var V__" and "a3 = Tc__" and "Ed__ V__ = \<lfloor>Tc__\<rfloor>"   | E :: "char list \<Rightarrow> ty option" and e\<^sub>1 :: "char list exp" and T\<^sub>1 :: "ty" and e\<^sub>2 :: "char list exp" and T\<^sub>2 :: "ty" where "a1 = Ee__" and "a2 = e\<^sub>1__ \<guillemotleft>Eq\<guillemotright> e\<^sub>2__" and "a3 = Boolean" and "P,Ee__,h,sh \<turnstile> e\<^sub>1__ : T\<^sub>1__" and "P,Ee__,h,sh \<turnstile> e\<^sub>2__ : T\<^sub>2__"   | E :: "char list \<Rightarrow> ty option" and e\<^sub>1 :: "char list exp" and e\<^sub>2 :: "char list exp" where "a1 = Ef__" and "a2 = e\<^sub>1'__ \<guillemotleft>Add\<guillemotright> e\<^sub>2'__" and "a3 = Integer" and "P,Ef__,h,sh \<turnstile> e\<^sub>1'__ : Integer" and "P,Ef__,h,sh \<turnstile> e\<^sub>2'__ : Integer"   | E :: "char list \<Rightarrow> ty option" and V :: "char list" and T :: "ty" and e :: "char list exp" and T' :: "ty" where "a1 = Eg__" and "a2 = Va__:=eb__" and "a3 = Void" and "Eg__ Va__ = \<lfloor>Td__\<rfloor>" and "P,Eg__,h,sh \<turnstile> eb__ : T'__" and "P \<turnstile> T'__ \<le> Td__"   | E :: "char list \<Rightarrow> ty option" and e :: "char list exp" and C :: "char list" and F :: "char list" and T :: "ty" and D :: "char list" where "a1 = Eh__" and "a2 = ec__\<bullet>F__{D__}" and "a3 = Te__" and "P,Eh__,h,sh \<turnstile> ec__ : Class Cb__" and "P \<turnstile> Cb__ has F__,NonStatic:Te__ in D__"   | E :: "char list \<Rightarrow> ty option" and e :: "char list exp" and F :: "char list" and D :: "char list" and T :: "ty" where "a1 = Ei__" and "a2 = ed__\<bullet>Fa__{Da__}" and "a3 = Tf__" and "P,Ei__,h,sh \<turnstile> ed__ : NT"   | C :: "char list" and F :: "char list" and T :: "ty" and D :: "char list" and E :: "char list \<Rightarrow> ty option" where "a1 = Ej__" and "a2 = Cc__\<bullet>\<^sub>sFb__{Db__}" and "a3 = Tg__" and "P \<turnstile> Cc__ has Fb__,Static:Tg__ in Db__"   | E :: "char list \<Rightarrow> ty option" and e\<^sub>1 :: "char list exp" and C :: "char list" and F :: "char list" and T :: "ty" and D :: "char list" and e\<^sub>2 :: "char list exp" and T\<^sub>2 :: "ty" where "a1 = Ek__" and "a2 = e\<^sub>1''__\<bullet>Fc__{Dc__} := e\<^sub>2''__" and "a3 = Void" and "P,Ek__,h,sh \<turnstile> e\<^sub>1''__ : Class Cd__" and "P \<turnstile> Cd__ has Fc__,NonStatic:Th__ in Dc__" and "P,Ek__,h,sh \<turnstile> e\<^sub>2''__ : T\<^sub>2'__" and "P \<turnstile> T\<^sub>2'__ \<le> Th__"   | E :: "char list \<Rightarrow> ty option" and e\<^sub>1 :: "char list exp" and e\<^sub>2 :: "char list exp" and T\<^sub>2 :: "ty" and F :: "char list" and D :: "char list" where "a1 = El__" and "a2 = e\<^sub>1'''__\<bullet>Fd__{Dd__} := e\<^sub>2'''__" and "a3 = Void" and "P,El__,h,sh \<turnstile> e\<^sub>1'''__ : NT" and "P,El__,h,sh \<turnstile> e\<^sub>2'''__ : T\<^sub>2''__"   | E :: "char list \<Rightarrow> ty option" and e\<^sub>2 :: "char list exp" and T\<^sub>2 :: "ty" and C :: "char list" and F :: "char list" and T :: "ty" and D :: "char list" where "a1 = Em__" and "a2 = Ce__\<bullet>\<^sub>sF{De__} := e\<^sub>2''''__" and "a3 = Void" and "P,Em__,h,sh \<turnstile> e\<^sub>2''''__ : T\<^sub>2'''__" and "P \<turnstile> Ce__ has F,Static:Ti__ in De__" and "P \<turnstile> T\<^sub>2'''__ \<le> Ti__"   | E :: "char list \<Rightarrow> ty option" and e :: "char list exp" and C :: "char list" and M :: "char list" and Ts :: "ty list" and T :: "ty" and pns :: "char list list" and body :: "char list exp" and D :: "char list" and es :: "char list exp list" and Ts' :: "ty list" where "a1 = En__" and "a2 = ee__\<bullet>M__(esa__)" and "a3 = Tj__" and "P,En__,h,sh \<turnstile> ee__ : Class Cf__" and "P \<turnstile> Cf__ sees M__, NonStatic :  Tsa__\<rightarrow>Tj__ = (pns__, body__) in Df__" and "P,En__,h,sh \<turnstile> esa__ [:] Ts'__" and "P \<turnstile> Ts'__ [\<le>] Tsa__"   | E :: "char list \<Rightarrow> ty option" and e :: "char list exp" and es :: "char list exp list" and Ts :: "ty list" and M :: "char list" and T :: "ty" where "a1 = Eo__" and "a2 = ef__\<bullet>Ma__(esb__)" and "a3 = Tk__" and "P,Eo__,h,sh \<turnstile> ef__ : NT" and "P,Eo__,h,sh \<turnstile> esb__ [:] Tsb__"   | C :: "char list" and M :: "char list" and Ts :: "ty list" and T :: "ty" and pns :: "char list list" and body :: "char list exp" and D :: "char list" and E :: "char list \<Rightarrow> ty option" and es :: "char list exp list" and Ts' :: "ty list" and sfs :: "sfields" and vs :: "val list" where "a1 = Ep__" and "a2 = Cg__\<bullet>\<^sub>sM(es)" and "a3 = Tl__" and "P \<turnstile> Cg__ sees M, Static :  Ts\<rightarrow>Tl__ = (pns, body) in D" and "P,Ep__,h,sh \<turnstile> es [:] Ts'" and "P \<turnstile> Ts' [\<le>] Ts" and "M = clinit \<longrightarrow> sh D = \<lfloor>(sfs, Processing)\<rfloor> \<and> es = map Val vs"   | E :: "char list \<Rightarrow> ty option" and V :: "char list" and T :: "ty" and e :: "char list exp" and T' :: "ty" where "a1 = Eq__" and "a2 = {Vb__:Tm__; eg__}" and "a3 = T'a__" and "P,Eq__(Vb__ \<mapsto> Tm__),h,sh \<turnstile> eg__ : T'a__"   | E :: "char list \<Rightarrow> ty option" and e\<^sub>1 :: "char list exp" and T\<^sub>1 :: "ty" and e\<^sub>2 :: "char list exp" and T\<^sub>2 :: "ty" where "a1 = Er__" and "a2 = e\<^sub>1''''__;; e\<^sub>2'''''__" and "a3 = T\<^sub>2''''__" and "P,Er__,h,sh \<turnstile> e\<^sub>1''''__ : T\<^sub>1'__" and "P,Er__,h,sh \<turnstile> e\<^sub>2'''''__ : T\<^sub>2''''__"   | E :: "char list \<Rightarrow> ty option" and e :: "char list exp" and e\<^sub>1 :: "char list exp" and T\<^sub>1 :: "ty" and e\<^sub>2 :: "char list exp" and T\<^sub>2 :: "ty" and T :: "ty" where "a1 = Es__" and "a2 = if (eh__) e\<^sub>1'''''__ else e\<^sub>2''''''__" and "a3 = Tn__" and "P,Es__,h,sh \<turnstile> eh__ : Boolean" and "P,Es__,h,sh \<turnstile> e\<^sub>1'''''__ : T\<^sub>1''__" and "P,Es__,h,sh \<turnstile> e\<^sub>2''''''__ : T\<^sub>2'''''__" and "P \<turnstile> T\<^sub>1''__ \<le> T\<^sub>2'''''__ \<or> P \<turnstile> T\<^sub>2'''''__ \<le> T\<^sub>1''__" and "P \<turnstile> T\<^sub>1''__ \<le> T\<^sub>2'''''__ \<longrightarrow> Tn__ = T\<^sub>2'''''__" and "P \<turnstile> T\<^sub>2'''''__ \<le> T\<^sub>1''__ \<longrightarrow> Tn__ = T\<^sub>1''__"   | E :: "char list \<Rightarrow> ty option" and e :: "char list exp" and c :: "char list exp" and T :: "ty" where "a1 = Et__" and "a2 = while (ei__) c" and "a3 = Void" and "P,Et__,h,sh \<turnstile> ei__ : Boolean" and "P,Et__,h,sh \<turnstile> c : To__"   | E :: "char list \<Rightarrow> ty option" and e :: "char list exp" and T\<^sub>r :: "ty" and T :: "ty" where "a1 = Eu__" and "a2 = throw ej__" and "a3 = Tp__" and "P,Eu__,h,sh \<turnstile> ej__ : T\<^sub>r" and "is_refT T\<^sub>r"   | E :: "char list \<Rightarrow> ty option" and e\<^sub>1 :: "char list exp" and T\<^sub>1 :: "ty" and V :: "char list" and C :: "char list" and e\<^sub>2 :: "char list exp" and T\<^sub>2 :: "ty" where "a1 = Ev__" and "a2 = try e\<^sub>1 catch(Ch__ V) e\<^sub>2" and "a3 = T\<^sub>2" and "P,Ev__,h,sh \<turnstile> e\<^sub>1 : T\<^sub>1" and "P,Ev__(V \<mapsto> Class Ch__),h,sh \<turnstile> e\<^sub>2 : T\<^sub>2" and "P \<turnstile> T\<^sub>1 \<le> T\<^sub>2"   | E :: "char list \<Rightarrow> ty option" and e :: "char list exp" and T :: "ty" and C :: "char list" and Cs :: "char list list" and b :: "bool" where "a1 = Ew__" and "a2 = INIT Ci__ (Cs__,b) \<leftarrow> ek__" and "a3 = Tq__" and "P,Ew__,h,sh \<turnstile> ek__ : Tq__" and "\<forall>C'\<in>set (Ci__ # Cs__). is_class P C'" and "\<not> sub_RI ek__" and "\<forall>C'\<in>set (tl Cs__). \<exists>sfs. sh C' = \<lfloor>(sfs, Processing)\<rfloor>" and "b \<longrightarrow> (\<forall>C'\<in>set Cs__. \<exists>sfs. sh C' = \<lfloor>(sfs, Processing)\<rfloor>)" and "distinct Cs__" and "supercls_lst P Cs__"   | E :: "char list \<Rightarrow> ty option" and e :: "char list exp" and T :: "ty" and e' :: "char list exp" and T' :: "ty" and C :: "char list" and Cs :: "char list list" where "a1 = E" and "a2 = RI (C,e) ; Cs \<leftarrow> e'" and "a3 = T'" and "P,E,h,sh \<turnstile> e : T" and "P,E,h,sh \<turnstile> e' : T'" and "\<forall>C'\<in>set (C # Cs). is_class P C'" and "\<not> sub_RI e'" and "\<forall>C'\<in>set (C # Cs). not_init C' e" and "\<forall>C'\<in>set Cs. \<exists>sfs. sh C' = \<lfloor>(sfs, Processing)\<rfloor>" and "\<exists>sfs. sh C = \<lfloor>(sfs, Processing)\<rfloor> \<or> sh C = \<lfloor>(sfs, Error)\<rfloor> \<and> e = THROW NoClassDefFoundError" and "distinct (C # Cs)" and "supercls_lst P (C # Cs)"