cases: fixes \<Gamma> :: "'d \<Rightarrow> ('e, 'd, 'f) com option"   and \<Theta> :: "'d \<Rightarrow> ('e, 'd, 'f) ann list option"   and a1 :: "('e, 'd, 'f) ann"   and a2 :: "('e, 'd, 'f) com"   and a3 :: "'e set \<times> ('e, 'd, 'f) com" assumes "atomicsR \<Gamma> \<Theta> a1 a2 a3" obtains p :: "'e set" and f :: "'e \<Rightarrow> 'e" where "a1 = AnnExpr p__" and "a2 = Basic f__" and "a3 = (p__, Basic f__)"   | p :: "'e set" and r :: "('e \<times> 'e) set" where "a1 = AnnExpr pa__" and "a2 = Spec r__" and "a3 = (pa__, Spec r__)"   | r :: "'e set" and ae :: "('e, 'd, 'f) ann" and b :: "'e set" and e :: "('e, 'd, 'f) com" where "a1 = AnnRec ra__ ae" and "a2 = Await b__ e__" and "a3 = (ra__ \<inter> b__, Await b__ e__)"   | p :: "('e, 'd, 'f) ann" and e :: "('e, 'd, 'f) com" and a :: "'e set \<times> ('e, 'd, 'f) com" and r :: "'e set" and i :: "'e set" and b :: "'e set" where "a1 = AnnWhile rb__ i__ pb__" and "a2 = While ba__ ea__" and "a3 = a__" and "atomicsR \<Gamma> \<Theta> pb__ ea__ a__"   | p :: "('e, 'd, 'f) ann" and e :: "('e, 'd, 'f) com" and a :: "'e set \<times> ('e, 'd, 'f) com" and r :: "'e set" and f :: "'f" and b :: "'e set" where "a1 = AnnRec rc__ p" and "a2 = Guard fa__ bb__ e" and "a3 = aa__" and "atomicsR \<Gamma> \<Theta> p e aa__"   | x :: "'e" and r :: "'e set" and ad :: "('e, 'd, 'f) ann" and f :: "'e \<Rightarrow> ('e, 'd, 'f) com" and a :: "'e set \<times> ('e, 'd, 'f) com" where "a1 = AnnRec rd__ ad" and "a2 = DynCom fb__" and "a3 = ab__" and "x \<in> rd__" and "atomicsR \<Gamma> \<Theta> ad (fb__ x) ab__"   | f :: "'d" and b :: "('e, 'd, 'f) com" and as :: "('e, 'd, 'f) ann list" and n :: "nat" and a :: "'e set \<times> ('e, 'd, 'f) com" and r :: "'e set" where "a1 = AnnCall re__ n" and "a2 = Call f" and "a3 = ac__" and "\<Gamma> f = Some bc__" and "\<Theta> f = Some as__" and "n < length as__" and "atomicsR \<Gamma> \<Theta> (as__ ! n) bc__ ac__"   | a1a :: "('e, 'd, 'f) ann" and c1 :: "('e, 'd, 'f) com" and a :: "'e set \<times> ('e, 'd, 'f) com" and a2a :: "('e, 'd, 'f) ann" and c2 :: "('e, 'd, 'f) com" where "a1 = AnnComp a1a__ a2a__" and "a2 = Seq c1__ c2__" and "a3 = af__" and "atomicsR \<Gamma> \<Theta> a1a__ c1__ af__"   | a2a :: "('e, 'd, 'f) ann" and c2 :: "('e, 'd, 'f) com" and a :: "'e set \<times> ('e, 'd, 'f) com" and a1a :: "('e, 'd, 'f) ann" and c1 :: "('e, 'd, 'f) com" where "a1 = AnnComp a1aa__ a2aa__" and "a2 = Seq c1a__ c2a__" and "a3 = ag__" and "atomicsR \<Gamma> \<Theta> a2aa__ c2a__ ag__"   | a1a :: "('e, 'd, 'f) ann" and c1 :: "('e, 'd, 'f) com" and a :: "'e set \<times> ('e, 'd, 'f) com" and r :: "'e set" and a2a :: "('e, 'd, 'f) ann" and b :: "'e set" and c2 :: "('e, 'd, 'f) com" where "a1 = AnnBin rf__ a1ab__ a2ab__" and "a2 = Cond bd__ c1b__ c2b__" and "a3 = ah__" and "atomicsR \<Gamma> \<Theta> a1ab__ c1b__ ah__"   | a2a :: "('e, 'd, 'f) ann" and c2 :: "('e, 'd, 'f) com" and a :: "'e set \<times> ('e, 'd, 'f) com" and r :: "'e set" and a1a :: "('e, 'd, 'f) ann" and b :: "'e set" and c1 :: "('e, 'd, 'f) com" where "a1 = AnnBin r a1ac__ a2ac__" and "a2 = Cond b c1c__ c2c__" and "a3 = ai__" and "atomicsR \<Gamma> \<Theta> a2ac__ c2c__ ai__"   | a1a :: "('e, 'd, 'f) ann" and c1 :: "('e, 'd, 'f) com" and a :: "'e set \<times> ('e, 'd, 'f) com" and a2a :: "('e, 'd, 'f) ann" and c2 :: "('e, 'd, 'f) com" where "a1 = AnnComp a1ad__ a2ad__" and "a2 = Catch c1d__ c2d__" and "a3 = aj__" and "atomicsR \<Gamma> \<Theta> a1ad__ c1d__ aj__"   | a2a :: "('e, 'd, 'f) ann" and c2 :: "('e, 'd, 'f) com" and a :: "'e set \<times> ('e, 'd, 'f) com" and a1a :: "('e, 'd, 'f) ann" and c1 :: "('e, 'd, 'f) com" where "a1 = AnnComp a1a a2a" and "a2 = Catch c1 c2" and "a3 = ak__" and "atomicsR \<Gamma> \<Theta> a2a c2 ak__"   | i :: "nat" and cs :: "('e, 'd, 'f) com list" and as :: "(('e, 'd, 'f) ann \<times> 'e set \<times> 'e set) list" and a :: "'e set \<times> ('e, 'd, 'f) com" where "a1 = AnnPar as" and "a2 = Parallel cs" and "a3 = a" and "i < length cs" and "atomicsR \<Gamma> \<Theta> (fst (as ! i)) (cs ! i) a"