cases: fixes a1 :: "'d \<Rightarrow> ('e, 'd, 'f) com option"   and a2 :: "'d \<Rightarrow> ('e, 'd, 'f) ann list option"   and a3 :: "('e, 'd, 'f) ann"   and a4 :: "('e, 'd, 'f) com" assumes "ann_matches a1 a2 a3 a4" obtains \<Gamma> :: "'d \<Rightarrow> ('e, 'd, 'f) com option" and \<Theta> :: "'d \<Rightarrow> ('e, 'd, 'f) ann list option" and a :: "'e set" where "a1 = \<Gamma>''__" and "a2 = \<Theta>''__" and "a3 = AnnExpr a__" and "a4 = Skip"   | \<Gamma> :: "'d \<Rightarrow> ('e, 'd, 'f) com option" and \<Theta> :: "'d \<Rightarrow> ('e, 'd, 'f) ann list option" and a :: "'e set" and f :: "'e \<Rightarrow> 'e" where "a1 = \<Gamma>'''__" and "a2 = \<Theta>'''__" and "a3 = AnnExpr aa__" and "a4 = Basic f__"   | \<Gamma> :: "'d \<Rightarrow> ('e, 'd, 'f) com option" and \<Theta> :: "'d \<Rightarrow> ('e, 'd, 'f) ann list option" and a :: "'e set" and r :: "('e \<times> 'e) set" where "a1 = \<Gamma>''''__" and "a2 = \<Theta>''''__" and "a3 = AnnExpr ab__" and "a4 = Spec r__"   | \<Gamma> :: "'d \<Rightarrow> ('e, 'd, 'f) com option" and \<Theta> :: "'d \<Rightarrow> ('e, 'd, 'f) ann list option" and a :: "'e set" where "a1 = \<Gamma>'''''__" and "a2 = \<Theta>'''''__" and "a3 = AnnExpr ac__" and "a4 = Throw"   | \<Gamma> :: "'d \<Rightarrow> ('e, 'd, 'f) com option" and \<Theta> :: "'d \<Rightarrow> ('e, 'd, 'f) ann list option" and a :: "('e, 'd, 'f) ann" and e :: "('e, 'd, 'f) com" and r :: "'e set" and b :: "'e set" where "a1 = \<Gamma>''''''__" and "a2 = \<Theta>''''''__" and "a3 = AnnRec ra__ ad__" and "a4 = Await b__ e__" and "ann_matches \<Gamma>''''''__ \<Theta>''''''__ ad__ e__"   | \<Gamma> :: "'d \<Rightarrow> ('e, 'd, 'f) com option" and \<Theta> :: "'d \<Rightarrow> ('e, 'd, 'f) ann list option" and a1a :: "('e, 'd, 'f) ann" and p1 :: "('e, 'd, 'f) com" and a2a :: "('e, 'd, 'f) ann" and p2 :: "('e, 'd, 'f) com" where "a1 = \<Gamma>'''''''__" and "a2 = \<Theta>'''''''__" and "a3 = AnnComp a1a__ a2a__" and "a4 = Seq p1 p2" and "ann_matches \<Gamma>'''''''__ \<Theta>'''''''__ a1a__ p1" and "ann_matches \<Gamma>'''''''__ \<Theta>'''''''__ a2a__ p2"   | \<Gamma> :: "'d \<Rightarrow> ('e, 'd, 'f) com option" and \<Theta> :: "'d \<Rightarrow> ('e, 'd, 'f) ann list option" and a1a :: "('e, 'd, 'f) ann" and c1 :: "('e, 'd, 'f) com" and a2a :: "('e, 'd, 'f) ann" and c2 :: "('e, 'd, 'f) com" and a :: "'e set" and b :: "'e set" where "a1 = \<Gamma>''''''''__" and "a2 = \<Theta>''''''''__" and "a3 = AnnBin ae__ a1aa__ a2aa__" and "a4 = Cond ba__ c1__ c2__" and "ann_matches \<Gamma>''''''''__ \<Theta>''''''''__ a1aa__ c1__" and "ann_matches \<Gamma>''''''''__ \<Theta>''''''''__ a2aa__ c2__"   | \<Gamma> :: "'d \<Rightarrow> ('e, 'd, 'f) com option" and \<Theta> :: "'d \<Rightarrow> ('e, 'd, 'f) ann list option" and a1a :: "('e, 'd, 'f) ann" and c1 :: "('e, 'd, 'f) com" and a2a :: "('e, 'd, 'f) ann" and c2 :: "('e, 'd, 'f) com" where "a1 = \<Gamma>'''''''''__" and "a2 = \<Theta>'''''''''__" and "a3 = AnnComp a1a a2a" and "a4 = Catch c1 c2" and "ann_matches \<Gamma>'''''''''__ \<Theta>'''''''''__ a1a c1" and "ann_matches \<Gamma>'''''''''__ \<Theta>'''''''''__ a2a c2"   | \<Gamma> :: "'d \<Rightarrow> ('e, 'd, 'f) com option" and \<Theta> :: "'d \<Rightarrow> ('e, 'd, 'f) ann list option" and a' :: "('e, 'd, 'f) ann" and e :: "('e, 'd, 'f) com" and a :: "'e set" and i :: "'e set" and b :: "'e set" where "a1 = \<Gamma>''''''''''__" and "a2 = \<Theta>''''''''''__" and "a3 = AnnWhile af__ i a'__" and "a4 = While bb__ ea__" and "ann_matches \<Gamma>''''''''''__ \<Theta>''''''''''__ a'__ ea__"   | \<Gamma> :: "'d \<Rightarrow> ('e, 'd, 'f) com option" and \<Theta> :: "'d \<Rightarrow> ('e, 'd, 'f) ann list option" and a' :: "('e, 'd, 'f) ann" and e :: "('e, 'd, 'f) com" and a :: "'e set" and f :: "'f" and b :: "'e set" where "a1 = \<Gamma>'''''''''''__" and "a2 = \<Theta>'''''''''''__" and "a3 = AnnRec ag__ a'" and "a4 = Guard fa__ bc__ e" and "ann_matches \<Gamma>'''''''''''__ \<Theta>'''''''''''__ a' e"   | \<Theta> :: "'d \<Rightarrow> ('e, 'd, 'f) ann list option" and f :: "'d" and as :: "('e, 'd, 'f) ann list" and \<Gamma> :: "'d \<Rightarrow> ('e, 'd, 'f) com option" and b :: "('e, 'd, 'f) com" and n :: "nat" and a :: "'e set" where "a1 = \<Gamma>''''''''''''__" and "a2 = \<Theta>''''''''''''__" and "a3 = AnnCall ah__ n" and "a4 = Call f" and "\<Theta>''''''''''''__ f = Some as__" and "\<Gamma>''''''''''''__ f = Some b" and "n < length as__" and "ann_matches \<Gamma>''''''''''''__ \<Theta>''''''''''''__ (as__ ! n) b"   | r :: "'e set" and \<Gamma> :: "'d \<Rightarrow> ('e, 'd, 'f) com option" and \<Theta> :: "'d \<Rightarrow> ('e, 'd, 'f) ann list option" and a :: "('e, 'd, 'f) ann" and c :: "'e \<Rightarrow> ('e, 'd, 'f) com" where "a1 = \<Gamma>'''''''''''''__" and "a2 = \<Theta>'''''''''''''__" and "a3 = AnnRec r a" and "a4 = DynCom c" and "\<forall>s\<in>r. ann_matches \<Gamma>'''''''''''''__ \<Theta>'''''''''''''__ a (c s)"   | as :: "(('e, 'd, 'f) ann \<times> 'e set \<times> 'e set) list" and cs :: "('e, 'd, 'f) com list" and \<Gamma> :: "'d \<Rightarrow> ('e, 'd, 'f) com option" and \<Theta> :: "'d \<Rightarrow> ('e, 'd, 'f) ann list option" where "a1 = \<Gamma>" and "a2 = \<Theta>" and "a3 = AnnPar as" and "a4 = Parallel cs" and "length as = length cs" and "\<forall>i<length cs. ann_matches \<Gamma> \<Theta> (fst (as ! i)) (cs ! i)"