cases: fixes \<Gamma> :: "'a \<Rightarrow> ('b, 'a, 'c) com option"   and a1 :: "('b, 'a, 'c) com \<times> ('b, 'c) xstate"   and a2 :: "('b, 'a, 'c) com \<times> ('b, 'c) xstate" assumes "\<Gamma>\<turnstile> a1 \<rightarrow> a2" obtains f :: "'b \<Rightarrow> 'b" and s :: "'b" where "a1 = (Basic f__, Normal s__)" and "a2 = (Skip, Normal (f__ s__))"   | s :: "'b" and t :: "'b" and r :: "('b \<times> 'b) set" where "a1 = (Spec r__, Normal sa__)" and "a2 = (Skip, Normal t)" and "(sa__, t) \<in> r__"   | s :: "'b" and r :: "('b \<times> 'b) set" where "a1 = (Spec r, Normal sb__)" and "a2 = (Skip, Stuck)" and "\<forall>t. (sb__, t) \<notin> r"   | s :: "'b" and g :: "'b set" and f :: "'c" and c :: "('b, 'a, 'c) com" where "a1 = (Guard fa__ g__ c__, Normal sc__)" and "a2 = (c__, Normal sc__)" and "sc__ \<in> g__"   | s :: "'b" and g :: "'b set" and f :: "'c" and c :: "('b, 'a, 'c) com" where "a1 = (Guard fb__ g ca__, Normal sd__)" and "a2 = (Skip, Fault fb__)" and "sd__ \<notin> g"   | c\<^sub>1 :: "('b, 'a, 'c) com" and s :: "('b, 'c) xstate" and c\<^sub>1' :: "('b, 'a, 'c) com" and s' :: "('b, 'c) xstate" and c\<^sub>2 :: "('b, 'a, 'c) com" where "a1 = (Seq c\<^sub>1__ c\<^sub>2__, se__)" and "a2 = (Seq c\<^sub>1'__ c\<^sub>2__, s'__)" and "\<Gamma>\<turnstile> (c\<^sub>1__, se__) \<rightarrow> (c\<^sub>1'__, s'__)"   | c\<^sub>2 :: "('b, 'a, 'c) com" and s :: "('b, 'c) xstate" where "a1 = (Seq Skip c\<^sub>2'__, sf__)" and "a2 = (c\<^sub>2'__, sf__)"   | c\<^sub>2 :: "('b, 'a, 'c) com" and s :: "'b" where "a1 = (Seq Throw c\<^sub>2''__, Normal sg__)" and "a2 = (Throw, Normal sg__)"   | s :: "'b" and b :: "'b set" and c\<^sub>1 :: "('b, 'a, 'c) com" and c\<^sub>2 :: "('b, 'a, 'c) com" where "a1 = (Cond b__ c\<^sub>1''__ c\<^sub>2'''__, Normal sh__)" and "a2 = (c\<^sub>1''__, Normal sh__)" and "sh__ \<in> b__"   | s :: "'b" and b :: "'b set" and c\<^sub>1 :: "('b, 'a, 'c) com" and c\<^sub>2 :: "('b, 'a, 'c) com" where "a1 = (Cond ba__ c\<^sub>1'''__ c\<^sub>2''''__, Normal si__)" and "a2 = (c\<^sub>2''''__, Normal si__)" and "si__ \<notin> ba__"   | s :: "'b" and b :: "'b set" and c :: "('b, 'a, 'c) com" where "a1 = (While bb__ cb__, Normal sj__)" and "a2 = (Seq cb__ (While bb__ cb__), Normal sj__)" and "sj__ \<in> bb__"   | s :: "'b" and b :: "'b set" and c :: "('b, 'a, 'c) com" where "a1 = (While b cc__, Normal sk__)" and "a2 = (Skip, Normal sk__)" and "sk__ \<notin> b"   | p :: "'a" and bdy :: "('b, 'a, 'c) com" and s :: "'b" where "a1 = (Call p__, Normal sl__)" and "a2 = (bdy, Normal sl__)" and "\<Gamma> p__ = Some bdy"   | p :: "'a" and s :: "'b" where "a1 = (Call p, Normal sm__)" and "a2 = (Skip, Stuck)" and "\<Gamma> p = None"   | c :: "'b \<Rightarrow> ('b, 'a, 'c) com" and s :: "'b" where "a1 = (DynCom cd__, Normal sn__)" and "a2 = (cd__ sn__, Normal sn__)"   | c\<^sub>1 :: "('b, 'a, 'c) com" and s :: "('b, 'c) xstate" and c\<^sub>1' :: "('b, 'a, 'c) com" and s' :: "('b, 'c) xstate" and c\<^sub>2 :: "('b, 'a, 'c) com" where "a1 = (Catch c\<^sub>1 c\<^sub>2'''''__, so__)" and "a2 = (Catch c\<^sub>1' c\<^sub>2'''''__, s')" and "\<Gamma>\<turnstile> (c\<^sub>1, so__) \<rightarrow> (c\<^sub>1', s')"   | c\<^sub>2 :: "('b, 'a, 'c) com" and s :: "'b" where "a1 = (Catch Throw c\<^sub>2''''''__, Normal sp__)" and "a2 = (c\<^sub>2''''''__, Normal sp__)"   | c\<^sub>2 :: "('b, 'a, 'c) com" and s :: "('b, 'c) xstate" where "a1 = (Catch Skip c\<^sub>2, s)" and "a2 = (Skip, s)"   | c :: "('b, 'a, 'c) com" and f :: "'c" where "a1 = (ce__, Fault fc__)" and "a2 = (Skip, Fault fc__)" and "ce__ \<noteq> Skip" and "redex ce__ = ce__"   | c :: "('b, 'a, 'c) com" where "a1 = (cf__, Stuck)" and "a2 = (Skip, Stuck)" and "cf__ \<noteq> Skip" and "redex cf__ = cf__"   | c :: "('b, 'a, 'c) com" and f :: "'b" where "a1 = (c, Abrupt f)" and "a2 = (Skip, Abrupt f)" and "c \<noteq> Skip" and "redex c = c"