cases: fixes a1 :: "'b"   and a2 :: "('a, 'b, 'c) psi"   and a3 :: "('a, 'b, 'c) residual" assumes "a1 \<rhd> a2 \<longmapsto> a3" obtains \<Psi> :: "'b" and M :: "'a" and K :: "'a" and xvec :: "name list" and N :: "'a" and Tvec :: "'a list" and P :: "('a, 'b, 'c) psi" where "a1 = \<Psi>'__" and "a2 = Ma__\<lparr>\<lambda>*xvec__ Na__\<rparr>.Pa__" and "a3 = K__\<lparr>Na__[xvec__::=Tvec]\<rparr> \<prec> Pa__[xvec__::=Tvec]" and "\<Psi>'__ \<turnstile> Ma__ \<leftrightarrow> K__" and "distinct xvec__" and "set xvec__ \<subseteq> supp Na__" and "xvec__ \<sharp>* Tvec" and "length xvec__ = length Tvec" and "xvec__ \<sharp>* \<Psi>'__" and "xvec__ \<sharp>* Ma__" and "xvec__ \<sharp>* K__"   | \<Psi> :: "'b" and M :: "'a" and K :: "'a" and N :: "'a" and P :: "('a, 'b, 'c) psi" where "a1 = \<Psi>''__" and "a2 = Mb__\<langle>Nb__\<rangle>.Pb__" and "a3 = Ka__\<langle>Nb__\<rangle> \<prec> Pb__" and "\<Psi>''__ \<turnstile> Mb__ \<leftrightarrow> Ka__"   | \<Psi> :: "'b" and P :: "('a, 'b, 'c) psi" and Rs :: "('a, 'b, 'c) residual" and \<phi> :: "'c" and Cs :: "('c \<times> ('a, 'b, 'c) psi) list" where "a1 = \<Psi>'''__" and "a2 = Cases Cs" and "a3 = Rs__" and "\<Psi>'''__ \<rhd> Pc__ \<longmapsto> Rs__" and "(\<phi>, Pc__) mem Cs" and "\<Psi>'''__ \<turnstile> \<phi>" and "guarded Pc__"   | \<Psi> :: "'b" and \<Psi>\<^sub>Q :: "'b" and P :: "('a, 'b, 'c) psi" and \<alpha> :: "'a action" and P' :: "('a, 'b, 'c) psi" and Q :: "('a, 'b, 'c) psi" and A\<^sub>Q :: "name list" where "a1 = \<Psi>''''__" and "a2 = Pd__ \<parallel> Q__" and "a3 = \<alpha>'__ \<prec> P'a__ \<parallel> Q__" and "\<Psi>''''__ \<otimes> \<Psi>\<^sub>Q__ \<rhd> Pd__ \<longmapsto> \<alpha>'__ \<prec> P'a__" and "extractFrame Q__ = \<langle>A\<^sub>Q__, \<Psi>\<^sub>Q__\<rangle>" and "distinct A\<^sub>Q__" and "A\<^sub>Q__ \<sharp>* Pd__" and "A\<^sub>Q__ \<sharp>* Q__" and "A\<^sub>Q__ \<sharp>* \<Psi>''''__" and "A\<^sub>Q__ \<sharp>* \<alpha>'__" and "A\<^sub>Q__ \<sharp>* P'a__" and "distinct (bn \<alpha>'__)" and "bn \<alpha>'__ \<sharp>* \<Psi>''''__" and "bn \<alpha>'__ \<sharp>* \<Psi>\<^sub>Q__" and "bn \<alpha>'__ \<sharp>* Q__" and "bn \<alpha>'__ \<sharp>* Pd__" and "bn \<alpha>'__ \<sharp>* subject \<alpha>'__"   | \<Psi> :: "'b" and \<Psi>\<^sub>P :: "'b" and Q :: "('a, 'b, 'c) psi" and \<alpha> :: "'a action" and Q' :: "('a, 'b, 'c) psi" and P :: "('a, 'b, 'c) psi" and A\<^sub>P :: "name list" where "a1 = \<Psi>'''''__" and "a2 = Pe__ \<parallel> Qa__" and "a3 = \<alpha>''__ \<prec> Pe__ \<parallel> Q'__" and "\<Psi>'''''__ \<otimes> \<Psi>\<^sub>P__ \<rhd> Qa__ \<longmapsto> \<alpha>''__ \<prec> Q'__" and "extractFrame Pe__ = \<langle>A\<^sub>P__, \<Psi>\<^sub>P__\<rangle>" and "distinct A\<^sub>P__" and "A\<^sub>P__ \<sharp>* Pe__" and "A\<^sub>P__ \<sharp>* Qa__" and "A\<^sub>P__ \<sharp>* \<Psi>'''''__" and "A\<^sub>P__ \<sharp>* \<alpha>''__" and "A\<^sub>P__ \<sharp>* Q'__" and "distinct (bn \<alpha>''__)" and "bn \<alpha>''__ \<sharp>* \<Psi>'''''__" and "bn \<alpha>''__ \<sharp>* \<Psi>\<^sub>P__" and "bn \<alpha>''__ \<sharp>* Pe__" and "bn \<alpha>''__ \<sharp>* Qa__" and "bn \<alpha>''__ \<sharp>* subject \<alpha>''__"   | \<Psi> :: "'b" and \<Psi>\<^sub>Q :: "'b" and P :: "('a, 'b, 'c) psi" and M :: "'a" and N :: "'a" and P' :: "('a, 'b, 'c) psi" and A\<^sub>P :: "name list" and \<Psi>\<^sub>P :: "'b" and Q :: "('a, 'b, 'c) psi" and K :: "'a" and xvec :: "name list" and Q' :: "('a, 'b, 'c) psi" and A\<^sub>Q :: "name list" where "a1 = \<Psi>''''''__" and "a2 = Pf__ \<parallel> Qb__" and "a3 = \<tau> \<prec> \<lparr>\<nu>*xveca__\<rparr>P'b__ \<parallel> Q'a__" and "\<Psi>''''''__ \<otimes> \<Psi>\<^sub>Q'__ \<rhd> Pf__ \<longmapsto> Mc__\<lparr>Nc__\<rparr> \<prec> P'b__" and "extractFrame Pf__ = \<langle>A\<^sub>P'__, \<Psi>\<^sub>P'__\<rangle>" and "distinct A\<^sub>P'__" and "\<Psi>''''''__ \<otimes> \<Psi>\<^sub>P'__ \<rhd> Qb__ \<longmapsto> Kb__\<lparr>\<nu>*xveca__\<rparr>\<langle>Nc__\<rangle> \<prec> Q'a__" and "extractFrame Qb__ = \<langle>A\<^sub>Q'__, \<Psi>\<^sub>Q'__\<rangle>" and "distinct A\<^sub>Q'__" and "\<Psi>''''''__ \<otimes> \<Psi>\<^sub>P'__ \<otimes> \<Psi>\<^sub>Q'__ \<turnstile> Mc__ \<leftrightarrow> Kb__" and "A\<^sub>P'__ \<sharp>* \<Psi>''''''__" and "A\<^sub>P'__ \<sharp>* \<Psi>\<^sub>Q'__" and "A\<^sub>P'__ \<sharp>* Pf__" and "A\<^sub>P'__ \<sharp>* Mc__" and "A\<^sub>P'__ \<sharp>* Nc__" and "A\<^sub>P'__ \<sharp>* P'b__" and "A\<^sub>P'__ \<sharp>* Qb__" and "A\<^sub>P'__ \<sharp>* Q'a__" and "A\<^sub>P'__ \<sharp>* A\<^sub>Q'__" and "A\<^sub>P'__ \<sharp>* xveca__" and "A\<^sub>Q'__ \<sharp>* \<Psi>''''''__" and "A\<^sub>Q'__ \<sharp>* \<Psi>\<^sub>P'__" and "A\<^sub>Q'__ \<sharp>* Pf__" and "A\<^sub>Q'__ \<sharp>* Nc__" and "A\<^sub>Q'__ \<sharp>* P'b__" and "A\<^sub>Q'__ \<sharp>* Qb__" and "A\<^sub>Q'__ \<sharp>* Kb__" and "A\<^sub>Q'__ \<sharp>* Q'a__" and "A\<^sub>Q'__ \<sharp>* xveca__" and "distinct xveca__" and "xveca__ \<sharp>* \<Psi>''''''__" and "xveca__ \<sharp>* \<Psi>\<^sub>P'__" and "xveca__ \<sharp>* \<Psi>\<^sub>Q'__" and "xveca__ \<sharp>* Pf__" and "xveca__ \<sharp>* Mc__" and "xveca__ \<sharp>* Qb__" and "xveca__ \<sharp>* Kb__"   | \<Psi> :: "'b" and \<Psi>\<^sub>Q :: "'b" and P :: "('a, 'b, 'c) psi" and M :: "'a" and xvec :: "name list" and N :: "'a" and P' :: "('a, 'b, 'c) psi" and A\<^sub>P :: "name list" and \<Psi>\<^sub>P :: "'b" and Q :: "('a, 'b, 'c) psi" and K :: "'a" and Q' :: "('a, 'b, 'c) psi" and A\<^sub>Q :: "name list" where "a1 = \<Psi>'''''''__" and "a2 = Pg__ \<parallel> Q" and "a3 = \<tau> \<prec> \<lparr>\<nu>*xvecb__\<rparr>P'c__ \<parallel> Q'" and "\<Psi>'''''''__ \<otimes> \<Psi>\<^sub>Q \<rhd> Pg__ \<longmapsto> Md__\<lparr>\<nu>*xvecb__\<rparr>\<langle>Nd__\<rangle> \<prec> P'c__" and "extractFrame Pg__ = \<langle>A\<^sub>P, \<Psi>\<^sub>P\<rangle>" and "distinct A\<^sub>P" and "\<Psi>'''''''__ \<otimes> \<Psi>\<^sub>P \<rhd> Q \<longmapsto> K\<lparr>Nd__\<rparr> \<prec> Q'" and "extractFrame Q = \<langle>A\<^sub>Q, \<Psi>\<^sub>Q\<rangle>" and "distinct A\<^sub>Q" and "\<Psi>'''''''__ \<otimes> \<Psi>\<^sub>P \<otimes> \<Psi>\<^sub>Q \<turnstile> Md__ \<leftrightarrow> K" and "A\<^sub>P \<sharp>* \<Psi>'''''''__" and "A\<^sub>P \<sharp>* \<Psi>\<^sub>Q" and "A\<^sub>P \<sharp>* Pg__" and "A\<^sub>P \<sharp>* Md__" and "A\<^sub>P \<sharp>* Nd__" and "A\<^sub>P \<sharp>* P'c__" and "A\<^sub>P \<sharp>* Q" and "A\<^sub>P \<sharp>* Q'" and "A\<^sub>P \<sharp>* A\<^sub>Q" and "A\<^sub>P \<sharp>* xvecb__" and "A\<^sub>Q \<sharp>* \<Psi>'''''''__" and "A\<^sub>Q \<sharp>* \<Psi>\<^sub>P" and "A\<^sub>Q \<sharp>* Pg__" and "A\<^sub>Q \<sharp>* Nd__" and "A\<^sub>Q \<sharp>* P'c__" and "A\<^sub>Q \<sharp>* Q" and "A\<^sub>Q \<sharp>* K" and "A\<^sub>Q \<sharp>* Q'" and "A\<^sub>Q \<sharp>* xvecb__" and "distinct xvecb__" and "xvecb__ \<sharp>* \<Psi>'''''''__" and "xvecb__ \<sharp>* \<Psi>\<^sub>P" and "xvecb__ \<sharp>* \<Psi>\<^sub>Q" and "xvecb__ \<sharp>* Pg__" and "xvecb__ \<sharp>* Md__" and "xvecb__ \<sharp>* Q" and "xvecb__ \<sharp>* K"   | \<Psi> :: "'b" and P :: "('a, 'b, 'c) psi" and M :: "'a" and xvec :: "name list" and yvec :: "name list" and N :: "'a" and P' :: "('a, 'b, 'c) psi" and x :: "name" where "a1 = \<Psi>''''''''__" and "a2 = \<lparr>\<nu>x__\<rparr>Ph__" and "a3 = M\<lparr>\<nu>*(xvec @ x__ # yvec)\<rparr>\<langle>N\<rangle> \<prec> P'd__" and "\<Psi>''''''''__ \<rhd> Ph__ \<longmapsto> M\<lparr>\<nu>*(xvec @ yvec)\<rparr>\<langle>N\<rangle> \<prec> P'd__" and "x__ \<in> supp N" and "x__ \<sharp> xvec" and "x__ \<sharp> yvec" and "x__ \<sharp> M" and "x__ \<sharp> \<Psi>''''''''__" and "distinct xvec" and "distinct yvec" and "xvec \<sharp>* \<Psi>''''''''__" and "xvec \<sharp>* Ph__" and "xvec \<sharp>* M" and "xvec \<sharp>* yvec" and "yvec \<sharp>* \<Psi>''''''''__" and "yvec \<sharp>* Ph__" and "yvec \<sharp>* M"   | \<Psi> :: "'b" and P :: "('a, 'b, 'c) psi" and \<alpha> :: "'a action" and P' :: "('a, 'b, 'c) psi" and x :: "name" where "a1 = \<Psi>'''''''''__" and "a2 = \<lparr>\<nu>x\<rparr>Pi__" and "a3 = \<alpha> \<prec> \<lparr>\<nu>x\<rparr>P'" and "\<Psi>'''''''''__ \<rhd> Pi__ \<longmapsto> \<alpha> \<prec> P'" and "x \<sharp> \<Psi>'''''''''__" and "x \<sharp> \<alpha>" and "bn \<alpha> \<sharp>* \<Psi>'''''''''__" and "bn \<alpha> \<sharp>* Pi__" and "bn \<alpha> \<sharp>* subject \<alpha>" and "distinct (bn \<alpha>)"   | \<Psi> :: "'b" and P :: "('a, 'b, 'c) psi" and Rs :: "('a, 'b, 'c) residual" where "a1 = \<Psi>" and "a2 = !P" and "a3 = Rs" and "\<Psi> \<rhd> P \<parallel> !P \<longmapsto> Rs" and "guarded P"