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