cases: fixes a1 :: "('g, 'h, 'i, 'j) com list \<times> 'h option \<times> 'j"   and a2 :: "('g, 'i) seq_label"   and a3 :: "('g, 'h, 'i, 'j) com list \<times> 'h option \<times> 'j" assumes "a1 \<rightarrow>\<^bsub>a2\<^esub> a3" obtains \<alpha> :: "'i" and action :: "'j \<Rightarrow> 'i" and s :: "'j" and s' :: "'j" and val :: "'g \<Rightarrow> 'j \<Rightarrow> 'j set" and \<beta> :: "'g" and l :: "'h" and cs :: "('g, 'h, 'i, 'j) com list" and uu_ :: "'h option" where "a1 = (\<lbrace>l__\<rbrace> Request action__ val # cs__, uu_, s__)" and "a2 = \<guillemotleft>\<alpha>__, \<beta>__\<guillemotright>" and "a3 = (cs__, Some l__, s'__)" and "\<alpha>__ = action__ s__" and "s'__ \<in> val \<beta>__ s__"   | s' :: "'j" and \<beta> :: "'g" and action :: "'i \<Rightarrow> 'j \<Rightarrow> ('j \<times> 'g) set" and \<alpha> :: "'i" and s :: "'j" and l :: "'h" and cs :: "('g, 'h, 'i, 'j) com list" and uv_ :: "'h option" where "a1 = (\<lbrace>la__\<rbrace> Response action # csa__, uv_, sa__)" and "a2 = \<guillemotright>\<alpha>'__, \<beta>\<guillemotleft>" and "a3 = (csa__, Some la__, s'a__)" and "(s'a__, \<beta>) \<in> action \<alpha>'__ sa__"   | s' :: "'j" and R :: "'j \<Rightarrow> 'j set" and s :: "'j" and l :: "'h" and cs :: "('g, 'h, 'i, 'j) com list" and uw_ :: "'h option" where "a1 = (\<lbrace>lb__\<rbrace> LocalOp R # csb__, uw_, sb__)" and "a2 = \<tau>" and "a3 = (csb__, Some lb__, s'b__)" and "s'b__ \<in> R sb__"   | b :: "'j \<Rightarrow> bool" and s :: "'j" and l :: "'h" and c :: "('g, 'h, 'i, 'j) com" and cs :: "('g, 'h, 'i, 'j) com list" and ux_ :: "'h option" where "a1 = (\<lbrace>lc__\<rbrace> IF b__ THEN c__ FI # csc__, ux_, sc__)" and "a2 = \<tau>" and "a3 = (c__ # csc__, Some lc__, sc__)" and "b__ sc__"   | b :: "'j \<Rightarrow> bool" and s :: "'j" and l :: "'h" and c :: "('g, 'h, 'i, 'j) com" and cs :: "('g, 'h, 'i, 'j) com list" and uy_ :: "'h option" where "a1 = (\<lbrace>ld__\<rbrace> IF ba__ THEN ca__ FI # csd__, uy_, sd__)" and "a2 = \<tau>" and "a3 = (csd__, Some ld__, sd__)" and "\<not> ba__ sd__"   | b :: "'j \<Rightarrow> bool" and s :: "'j" and l :: "'h" and c1 :: "('g, 'h, 'i, 'j) com" and c2 :: "('g, 'h, 'i, 'j) com" and cs :: "('g, 'h, 'i, 'j) com list" and uz_ :: "'h option" where "a1 = (\<lbrace>le__\<rbrace> IF bb__ THEN c1__ ELSE c2__ FI # cse__, uz_, se__)" and "a2 = \<tau>" and "a3 = (c1__ # cse__, Some le__, se__)" and "bb__ se__"   | b :: "'j \<Rightarrow> bool" and s :: "'j" and l :: "'h" and c1 :: "('g, 'h, 'i, 'j) com" and c2 :: "('g, 'h, 'i, 'j) com" and cs :: "('g, 'h, 'i, 'j) com list" and va_ :: "'h option" where "a1 = (\<lbrace>lf__\<rbrace> IF bc__ THEN c1a__ ELSE c2a__ FI # csf__, va_, sf__)" and "a2 = \<tau>" and "a3 = (c2a__ # csf__, Some lf__, sf__)" and "\<not> bc__ sf__"   | c :: "('g, 'h, 'i, 'j) com" and cs :: "('g, 'h, 'i, 'j) com list" and s :: "'h option \<times> 'j" and \<alpha> :: "('g, 'i) seq_label" and cs' :: "('g, 'h, 'i, 'j) com list" and s' :: "'h option \<times> 'j" where "a1 = (LOOP DO cb__ OD # csg__, sg__)" and "a2 = \<alpha>''__" and "a3 = (cs'__, s'c__)" and "(cb__ # LOOP DO cb__ OD # csg__, sg__) \<rightarrow>\<^bsub>\<alpha>''__\<^esub> (cs'__, s'c__)"   | b :: "'j \<Rightarrow> bool" and s :: "'j" and l :: "'h" and c :: "('g, 'h, 'i, 'j) com" and cs :: "('g, 'h, 'i, 'j) com list" and vb_ :: "'h option" where "a1 = (\<lbrace>lg__\<rbrace> WHILE bd__ DO cc__ OD # csh__, vb_, sh__)" and "a2 = \<tau>" and "a3 = (cc__ # \<lbrace>lg__\<rbrace> WHILE bd__ DO cc__ OD # csh__, Some lg__, sh__)" and "bd__ sh__"   | b :: "'j \<Rightarrow> bool" and s :: "'j" and l :: "'h" and c :: "('g, 'h, 'i, 'j) com" and cs :: "('g, 'h, 'i, 'j) com list" and vc_ :: "'h option" where "a1 = (\<lbrace>l\<rbrace> WHILE b DO c OD # csi__, vc_, si__)" and "a2 = \<tau>" and "a3 = (csi__, Some l, si__)" and "\<not> b si__"   | c1 :: "('g, 'h, 'i, 'j) com" and c2 :: "('g, 'h, 'i, 'j) com" and cs :: "('g, 'h, 'i, 'j) com list" and s :: "'h option \<times> 'j" and \<alpha> :: "('g, 'i) seq_label" and cs' :: "('g, 'h, 'i, 'j) com list" and s' :: "'h option \<times> 'j" where "a1 = (c1b__ ;; c2b__ # csj__, sj__)" and "a2 = \<alpha>'''__" and "a3 = (cs'a__, s'd__)" and "(c1b__ # c2b__ # csj__, sj__) \<rightarrow>\<^bsub>\<alpha>'''__\<^esub> (cs'a__, s'd__)"   | c1 :: "('g, 'h, 'i, 'j) com" and cs :: "('g, 'h, 'i, 'j) com list" and s :: "'h option \<times> 'j" and \<alpha> :: "('g, 'i) seq_label" and cs' :: "('g, 'h, 'i, 'j) com list" and s' :: "'h option \<times> 'j" and c2 :: "('g, 'h, 'i, 'j) com" where "a1 = (c1c__ \<oplus> c2c__ # csk__, sk__)" and "a2 = \<alpha>''''__" and "a3 = (cs'b__, s'e__)" and "(c1c__ # csk__, sk__) \<rightarrow>\<^bsub>\<alpha>''''__\<^esub> (cs'b__, s'e__)"   | c2 :: "('g, 'h, 'i, 'j) com" and cs :: "('g, 'h, 'i, 'j) com list" and s :: "'h option \<times> 'j" and \<alpha> :: "('g, 'i) seq_label" and cs' :: "('g, 'h, 'i, 'j) com list" and s' :: "'h option \<times> 'j" and c1 :: "('g, 'h, 'i, 'j) com" where "a1 = (c1 \<oplus> c2 # cs, s)" and "a2 = \<alpha>" and "a3 = (cs', s')" and "(c2 # cs, s) \<rightarrow>\<^bsub>\<alpha>\<^esub> (cs', s')"