cases: fixes \<Gamma> :: "'d \<Rightarrow> ('e, 'd, 'f) com option"   and a1 :: "('e, 'd, 'f) com \<times> ('e, 'f) xstate"   and a2 :: "('e, 'd, 'f) com \<times> ('e, 'f) xstate" assumes "\<Gamma>\<turnstile> a1 \<rightarrow> a2" obtains f :: "'e \<Rightarrow> 'e" and s :: "'e" where "a1 = (Basic f__, Normal s__)" and "a2 = (Skip, Normal (f__ s__))"   | s :: "'e" and t :: "'e" and r :: "('e \<times> 'e) set" where "a1 = (Spec r__, Normal sa__)" and "a2 = (Skip, Normal t)" and "(sa__, t) \<in> r__"   | s :: "'e" and r :: "('e \<times> 'e) set" where "a1 = (Spec r, Normal sb__)" and "a2 = (Skip, Stuck)" and "\<forall>t. (sb__, t) \<notin> r"   | s :: "'e" and g :: "'e set" and f :: "'f" and c :: "('e, 'd, 'f) com" where "a1 = (Guard fa__ g__ c__, Normal sc__)" and "a2 = (c__, Normal sc__)" and "sc__ \<in> g__"   | s :: "'e" and g :: "'e set" and f :: "'f" and c :: "('e, 'd, 'f) com" where "a1 = (Guard fb__ g ca__, Normal sd__)" and "a2 = (Skip, Fault fb__)" and "sd__ \<notin> g"   | c\<^sub>1 :: "('e, 'd, 'f) com" and s :: "('e, 'f) xstate" and c\<^sub>1' :: "('e, 'd, 'f) com" and s' :: "('e, 'f) xstate" and c\<^sub>2 :: "('e, 'd, 'f) 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 :: "('e, 'd, 'f) com" and s :: "('e, 'f) xstate" where "a1 = (Seq Skip c\<^sub>2'__, sf__)" and "a2 = (c\<^sub>2'__, sf__)"   | c\<^sub>2 :: "('e, 'd, 'f) com" and s :: "'e" where "a1 = (Seq Throw c\<^sub>2''__, Normal sg__)" and "a2 = (Throw, Normal sg__)"   | s :: "'e" and b :: "'e set" and c\<^sub>1 :: "('e, 'd, 'f) com" and c\<^sub>2 :: "('e, 'd, 'f) 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 :: "'e" and b :: "'e set" and c\<^sub>1 :: "('e, 'd, 'f) com" and c\<^sub>2 :: "('e, 'd, 'f) 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 :: "'e" and b :: "'e set" and c :: "('e, 'd, 'f) com" where "a1 = (While bb__ cb__, Normal sj__)" and "a2 = (Seq cb__ (While bb__ cb__), Normal sj__)" and "sj__ \<in> bb__"   | s :: "'e" and b :: "'e set" and c :: "('e, 'd, 'f) com" where "a1 = (While bc__ cc__, Normal sk__)" and "a2 = (Skip, Normal sk__)" and "sk__ \<notin> bc__"   | p :: "'d" and b :: "('e, 'd, 'f) com" and s :: "'e" where "a1 = (Call p__, Normal sl__)" and "a2 = (bd__, Normal sl__)" and "\<Gamma> p__ = Some bd__"   | p :: "'d" and s :: "'e" where "a1 = (Call p, Normal sm__)" and "a2 = (Skip, Stuck)" and "\<Gamma> p = None"   | c :: "'e \<Rightarrow> ('e, 'd, 'f) com" and s :: "'e" where "a1 = (DynCom cd__, Normal sn__)" and "a2 = (cd__ sn__, Normal sn__)"   | c\<^sub>1 :: "('e, 'd, 'f) com" and s :: "('e, 'f) xstate" and c\<^sub>1' :: "('e, 'd, 'f) com" and s' :: "('e, 'f) xstate" and c\<^sub>2 :: "('e, 'd, 'f) com" where "a1 = (Catch c\<^sub>1 c\<^sub>2'''''__, so__)" and "a2 = (Catch c\<^sub>1' c\<^sub>2'''''__, s'a__)" and "\<Gamma>\<turnstile> (c\<^sub>1, so__) \<rightarrow> (c\<^sub>1', s'a__)"   | c\<^sub>2 :: "('e, 'd, 'f) com" and s :: "('e, 'f) xstate" where "a1 = (Catch Skip c\<^sub>2''''''__, sp__)" and "a2 = (Skip, sp__)"   | c\<^sub>2 :: "('e, 'd, 'f) com" and s :: "'e" where "a1 = (Catch Throw c\<^sub>2, Normal sq__)" and "a2 = (c\<^sub>2, Normal sq__)"   | c :: "('e, 'd, 'f) com" and f :: "'f" where "a1 = (ce__, Fault fc__)" and "a2 = (Skip, Fault fc__)" and "ce__ \<noteq> Skip" and "redex ce__ = ce__"   | c :: "('e, 'd, 'f) com" where "a1 = (cf__, Stuck)" and "a2 = (Skip, Stuck)" and "cf__ \<noteq> Skip" and "redex cf__ = cf__"   | i :: "nat" and cs :: "('e, 'd, 'f) com list" and s :: "('e, 'f) xstate" and c' :: "('e, 'd, 'f) com" and s' :: "('e, 'f) xstate" where "a1 = (Parallel cs__, sr__)" and "a2 = (Parallel (cs__[i := c'__]), s'b__)" and "i < length cs__" and "\<Gamma>\<turnstile> (cs__ ! i, sr__) \<rightarrow> (c'__, s'b__)"   | cs :: "('e, 'd, 'f) com list" and s :: "('e, 'f) xstate" where "a1 = (Parallel csa__, ss__)" and "a2 = (Skip, ss__)" and "\<forall>c\<in>set csa__. c = Skip"   | cs :: "('e, 'd, 'f) com list" and s :: "('e, 'f) xstate" where "a1 = (Parallel cs, st__)" and "a2 = (Throw, st__)" and "Throw \<in> set cs"   | s :: "'e" and b :: "'e set" and c :: "('e, 'd, 'f) com" and c' :: "('e, 'd, 'f) com" and s' :: "'e" where "a1 = (Await be__ cg__, Normal su__)" and "a2 = (c'a__, Normal s')" and "su__ \<in> be__" and "\<Gamma> \<turnstile> (cg__, Normal su__) \<rightarrow>\<^sup>* (c'a__, Normal s')" and "atom_com cg__" and "c'a__ = Skip \<or> c'a__ = Throw"   | s :: "'e" and b :: "'e set" and c :: "('e, 'd, 'f) com" and c' :: "('e, 'd, 'f) com" where "a1 = (Await bf__ ch__, Normal sv__)" and "a2 = (Skip, Stuck)" and "sv__ \<in> bf__" and "\<Gamma> \<turnstile> (ch__, Normal sv__) \<rightarrow>\<^sup>* (c'b__, Stuck)" and "atom_com ch__"   | s :: "'e" and b :: "'e set" and c :: "('e, 'd, 'f) com" and c' :: "('e, 'd, 'f) com" and f :: "'f" where "a1 = (Await bg__ ci__, Normal sw__)" and "a2 = (Skip, Fault f)" and "sw__ \<in> bg__" and "\<Gamma> \<turnstile> (ci__, Normal sw__) \<rightarrow>\<^sup>* (c', Fault f)" and "atom_com ci__"   | c :: "('e, 'd, 'f) com" and b :: "'e set" and s :: "'e" where "a1 = (Await b c, Normal s)" and "a2 = (Skip, Stuck)" and "\<not> atom_com c"