cases: fixes \<Gamma> :: "'a \<Rightarrow> ('b, 'a, 'c) com option"   and \<Theta> :: "'a \<Rightarrow> ('b, 'a, 'c) ann list option"   and a1 :: "'b set"   and a2 :: "'b set"   and a3 :: "('b, 'a, 'c) ann"   and a4 :: "('b, 'a, 'c) com"   and a5 :: "'b set" assumes "assertionsR \<Gamma> \<Theta> a1 a2 a3 a4 a5" obtains Q :: "'b set" and A :: "'b set" and p :: "'b set" where "a1 = Q__" and "a2 = A__" and "a3 = AnnExpr p__" and "a4 = Skip" and "a5 = p__"   | Q :: "'b set" and A :: "'b set" and p :: "'b set" where "a1 = Qa__" and "a2 = Aa__" and "a3 = AnnExpr pa__" and "a4 = Throw" and "a5 = pa__"   | Q :: "'b set" and A :: "'b set" and p :: "'b set" and f :: "'b \<Rightarrow> 'b" where "a1 = Qb__" and "a2 = Ab__" and "a3 = AnnExpr pb__" and "a4 = Basic f__" and "a5 = pb__"   | Q :: "'b set" and A :: "'b set" and p :: "'b set" and f :: "'b \<Rightarrow> 'b" where "a1 = Qc__" and "a2 = Ac__" and "a3 = AnnExpr pc__" and "a4 = Basic fa__" and "a5 = Qc__"   | Q :: "'b set" and A :: "'b set" and p :: "'b set" and r :: "('b \<times> 'b) set" where "a1 = Qd__" and "a2 = Ad__" and "a3 = AnnExpr pd__" and "a4 = Spec r__" and "a5 = pd__"   | Q :: "'b set" and A :: "'b set" and p :: "'b set" and r :: "('b \<times> 'b) set" where "a1 = Qe__" and "a2 = Ae__" and "a3 = AnnExpr pe__" and "a4 = Spec ra__" and "a5 = Qe__"   | Q :: "'b set" and A :: "'b set" and r :: "'b set" and ae :: "('b, 'a, 'c) ann" and b :: "'b set" and e :: "('b, 'a, 'c) com" where "a1 = Qf__" and "a2 = Af__" and "a3 = AnnRec rb__ ae__" and "a4 = Await b__ e__" and "a5 = Qf__"   | Q :: "'b set" and A :: "'b set" and r :: "'b set" and ae :: "('b, 'a, 'c) ann" and b :: "'b set" and e :: "('b, 'a, 'c) com" where "a1 = Qg__" and "a2 = Ag__" and "a3 = AnnRec rc__ aea__" and "a4 = Await ba__ ea__" and "a5 = Ag__"   | Q :: "'b set" and A :: "'b set" and r :: "'b set" and ae :: "('b, 'a, 'c) ann" and b :: "'b set" and e :: "('b, 'a, 'c) com" where "a1 = Qh__" and "a2 = Ah__" and "a3 = AnnRec rd__ ae" and "a4 = Await bb__ eb__" and "a5 = rd__"   | i :: "'b set" and A :: "'b set" and p :: "('b, 'a, 'c) ann" and e :: "('b, 'a, 'c) com" and a :: "'b set" and Q :: "'b set" and r :: "'b set" and b :: "'b set" where "a1 = Qi__" and "a2 = Ai__" and "a3 = AnnWhile re__ i__ pf__" and "a4 = While bc__ ec__" and "a5 = a__" and "assertionsR \<Gamma> \<Theta> i__ Ai__ pf__ ec__ a__"   | Q :: "'b set" and A :: "'b set" and r :: "'b set" and i :: "'b set" and p :: "('b, 'a, 'c) ann" and b :: "'b set" and e :: "('b, 'a, 'c) com" where "a1 = Qj__" and "a2 = Aj__" and "a3 = AnnWhile rf__ ia__ pg__" and "a4 = While bd__ ed__" and "a5 = rf__"   | Q :: "'b set" and A :: "'b set" and r :: "'b set" and i :: "'b set" and p :: "('b, 'a, 'c) ann" and b :: "'b set" and e :: "('b, 'a, 'c) com" where "a1 = Qk__" and "a2 = Ak__" and "a3 = AnnWhile rg__ ib__ ph__" and "a4 = While be__ ee__" and "a5 = ib__"   | Q :: "'b set" and A :: "'b set" and r :: "'b set" and i :: "'b set" and p :: "('b, 'a, 'c) ann" and b :: "'b set" and e :: "('b, 'a, 'c) com" where "a1 = Ql__" and "a2 = Al__" and "a3 = AnnWhile rh__ ic__ pi__" and "a4 = While bf__ ef__" and "a5 = Ql__"   | Q :: "'b set" and A :: "'b set" and p :: "('b, 'a, 'c) ann" and e :: "('b, 'a, 'c) com" and a :: "'b set" and r :: "'b set" and f :: "'c" and b :: "'b set" where "a1 = Qm__" and "a2 = Am__" and "a3 = AnnRec ri__ pj__" and "a4 = Guard fb__ bg__ eg__" and "a5 = aa__" and "assertionsR \<Gamma> \<Theta> Qm__ Am__ pj__ eg__ aa__"   | Q :: "'b set" and A :: "'b set" and r :: "'b set" and p :: "('b, 'a, 'c) ann" and f :: "'c" and b :: "'b set" and e :: "('b, 'a, 'c) com" where "a1 = Qn__" and "a2 = An__" and "a3 = AnnRec rj__ pk__" and "a4 = Guard fc__ bh__ e" and "a5 = rj__"   | x :: "'b" and r :: "'b set" and Q :: "'b set" and A :: "'b set" and ad :: "('b, 'a, 'c) ann" and f :: "'b \<Rightarrow> ('b, 'a, 'c) com" and a :: "'b set" where "a1 = Qo__" and "a2 = Ao__" and "a3 = AnnRec rk__ ad" and "a4 = DynCom fd__" and "a5 = ab__" and "x \<in> rk__" and "assertionsR \<Gamma> \<Theta> Qo__ Ao__ ad (fd__ x) ab__"   | Q :: "'b set" and A :: "'b set" and r :: "'b set" and p :: "('b, 'a, 'c) ann" and f :: "'b \<Rightarrow> ('b, 'a, 'c) com" where "a1 = Qp__" and "a2 = Ap__" and "a3 = AnnRec rl__ p" and "a4 = DynCom fe__" and "a5 = rl__"   | Q :: "'b set" and A :: "'b set" and r :: "'b set" and n :: "nat" and f :: "'a" where "a1 = Qq__" and "a2 = Aq__" and "a3 = AnnCall rm__ n__" and "a4 = Call ff__" and "a5 = rm__"   | f :: "'a" and b :: "('b, 'a, 'c) com" and as :: "('b, 'a, 'c) ann list" and n :: "nat" and Q :: "'b set" and A :: "'b set" and a :: "'b set" and r :: "'b set" where "a1 = Qr__" and "a2 = Ar__" and "a3 = AnnCall rn__ n" and "a4 = Call f" and "a5 = ac__" and "\<Gamma> f = Some bi__" and "\<Theta> f = Some as__" and "n < length as__" and "assertionsR \<Gamma> \<Theta> Qr__ Ar__ (as__ ! n) bi__ ac__"   | a2a :: "('b, 'a, 'c) ann" and A :: "'b set" and a1a :: "('b, 'a, 'c) ann" and c1 :: "('b, 'a, 'c) com" and a :: "'b set" and Q :: "'b set" and c2 :: "('b, 'a, 'c) com" where "a1 = Qs__" and "a2 = As__" and "a3 = AnnComp a1a__ a2a__" and "a4 = Seq c1__ c2__" and "a5 = af__" and "assertionsR \<Gamma> \<Theta> (pre a2a__) As__ a1a__ c1__ af__"   | Q :: "'b set" and A :: "'b set" and a2a :: "('b, 'a, 'c) ann" and c2 :: "('b, 'a, 'c) com" and a :: "'b set" and a1a :: "('b, 'a, 'c) ann" and c1 :: "('b, 'a, 'c) com" where "a1 = Qt__" and "a2 = At__" and "a3 = AnnComp a1aa__ a2aa__" and "a4 = Seq c1a__ c2a__" and "a5 = ag__" and "assertionsR \<Gamma> \<Theta> Qt__ At__ a2aa__ c2a__ ag__"   | Q :: "'b set" and A :: "'b set" and a1a :: "('b, 'a, 'c) ann" and c1 :: "('b, 'a, 'c) com" and a :: "'b set" and r :: "'b set" and a2a :: "('b, 'a, 'c) ann" and b :: "'b set" and c2 :: "('b, 'a, 'c) com" where "a1 = Qu__" and "a2 = Au__" and "a3 = AnnBin ro__ a1ab__ a2ab__" and "a4 = Cond bj__ c1b__ c2b__" and "a5 = ah__" and "assertionsR \<Gamma> \<Theta> Qu__ Au__ a1ab__ c1b__ ah__"   | Q :: "'b set" and A :: "'b set" and a2a :: "('b, 'a, 'c) ann" and c2 :: "('b, 'a, 'c) com" and a :: "'b set" and r :: "'b set" and a1a :: "('b, 'a, 'c) ann" and b :: "'b set" and c1 :: "('b, 'a, 'c) com" where "a1 = Qv__" and "a2 = Av__" and "a3 = AnnBin rp__ a1ac__ a2ac__" and "a4 = Cond bk__ c1c__ c2c__" and "a5 = ai__" and "assertionsR \<Gamma> \<Theta> Qv__ Av__ a2ac__ c2c__ ai__"   | Q :: "'b set" and A :: "'b set" and r :: "'b set" and a1a :: "('b, 'a, 'c) ann" and a2a :: "('b, 'a, 'c) ann" and b :: "'b set" and c1 :: "('b, 'a, 'c) com" and c2 :: "('b, 'a, 'c) com" where "a1 = Qw__" and "a2 = Aw__" and "a3 = AnnBin r a1ad__ a2ad__" and "a4 = Cond b c1d__ c2d__" and "a5 = r"   | Q :: "'b set" and a2a :: "('b, 'a, 'c) ann" and a1a :: "('b, 'a, 'c) ann" and c1 :: "('b, 'a, 'c) com" and a :: "'b set" and A :: "'b set" and c2 :: "('b, 'a, 'c) com" where "a1 = Qx__" and "a2 = Ax__" and "a3 = AnnComp a1ae__ a2ae__" and "a4 = Catch c1e__ c2e__" and "a5 = aj__" and "assertionsR \<Gamma> \<Theta> Qx__ (pre a2ae__) a1ae__ c1e__ aj__"   | Q :: "'b set" and A :: "'b set" and a2a :: "('b, 'a, 'c) ann" and c2 :: "('b, 'a, 'c) com" and a :: "'b set" and a1a :: "('b, 'a, 'c) ann" and c1 :: "('b, 'a, 'c) com" where "a1 = Qy__" and "a2 = Ay__" and "a3 = AnnComp a1a a2a" and "a4 = Catch c1 c2" and "a5 = ak__" and "assertionsR \<Gamma> \<Theta> Qy__ Ay__ 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" and Q :: "'b set" and A :: "'b set" where "a1 = Qz__" and "a2 = Az__" and "a3 = AnnPar asa__" and "a4 = Parallel cs__" and "a5 = a" and "i < length cs__" and "assertionsR \<Gamma> \<Theta> (fst (snd (asa__ ! i))) (snd (snd (asa__ ! i))) (fst (asa__ ! i)) (cs__ ! i) a"   | Qs :: "'b set" and as :: "(('b, 'a, 'c) ann \<times> 'b set \<times> 'b set) list" and Q :: "'b set" and A :: "'b set" and cs :: "('b, 'a, 'c) com list" where "a1 = Q" and "a2 = A" and "a3 = AnnPar as" and "a4 = Parallel cs" and "a5 = Qs" and "Qs = \<Inter> (set (map (\<lambda>a. fst (snd a)) as))"