strong_induct: fixes x1 :: "'b"   and x2 :: "('a, 'b, 'c) psi"   and x3 :: "('a, 'b, 'c) residual"   and P :: "'e \<Rightarrow> 'b \<Rightarrow> ('a, 'b, 'c) psi \<Rightarrow> ('a, 'b, 'c) residual \<Rightarrow> bool"   and z :: "'e" assumes "x1 \<rhd> x2 \<longmapsto> x3"   and "\<And>\<Psi> M K xvec N Tvec P y. \<lbrakk>xvec \<sharp>* y; \<Psi> \<turnstile> M \<leftrightarrow> K; distinct xvec; set xvec \<subseteq> supp N; xvec \<sharp>* Tvec; length xvec = length Tvec; xvec \<sharp>* \<Psi>; xvec \<sharp>* M; xvec \<sharp>* K\<rbrakk> \<Longrightarrow> P y \<Psi> (M\<lparr>\<lambda>*xvec N\<rparr>.P) (K\<lparr>N[xvec::=Tvec]\<rparr> \<prec> P[xvec::=Tvec])"   and "\<And>\<Psi> M K N P y. \<Psi> \<turnstile> M \<leftrightarrow> K \<Longrightarrow> P y \<Psi> (M\<langle>N\<rangle>.P) (K\<langle>N\<rangle> \<prec> P)"   and "\<And>\<Psi> P Rs \<phi> Cs y. \<lbrakk>\<Psi> \<rhd> P \<longmapsto> Rs; \<And>z. P z \<Psi> P Rs; (\<phi>, P) mem Cs; \<Psi> \<turnstile> \<phi>; guarded P\<rbrakk> \<Longrightarrow> P y \<Psi> (Cases Cs) Rs"   and "\<And>\<Psi> \<Psi>\<^sub>Q P \<alpha> P' Q A\<^sub>Q y. \<lbrakk>A\<^sub>Q \<sharp>* y; bn \<alpha> \<sharp>* y; \<Psi> \<otimes> \<Psi>\<^sub>Q \<rhd> P \<longmapsto> \<alpha> \<prec> P'; \<And>z. P z (\<Psi> \<otimes> \<Psi>\<^sub>Q) P (\<alpha> \<prec> P'); extractFrame Q = \<langle>A\<^sub>Q, \<Psi>\<^sub>Q\<rangle>; distinct A\<^sub>Q; A\<^sub>Q \<sharp>* P; A\<^sub>Q \<sharp>* Q; A\<^sub>Q \<sharp>* \<Psi>; A\<^sub>Q \<sharp>* \<alpha>; A\<^sub>Q \<sharp>* P'; distinct (bn \<alpha>); bn \<alpha> \<sharp>* \<Psi>; bn \<alpha> \<sharp>* \<Psi>\<^sub>Q; bn \<alpha> \<sharp>* Q; bn \<alpha> \<sharp>* P; bn \<alpha> \<sharp>* subject \<alpha>\<rbrakk> \<Longrightarrow> P y \<Psi> (P \<parallel> Q) (\<alpha> \<prec> P' \<parallel> Q)"   and "\<And>\<Psi> \<Psi>\<^sub>P Q \<alpha> Q' P A\<^sub>P y. \<lbrakk>A\<^sub>P \<sharp>* y; bn \<alpha> \<sharp>* y; \<Psi> \<otimes> \<Psi>\<^sub>P \<rhd> Q \<longmapsto> \<alpha> \<prec> Q'; \<And>z. P z (\<Psi> \<otimes> \<Psi>\<^sub>P) Q (\<alpha> \<prec> Q'); extractFrame P = \<langle>A\<^sub>P, \<Psi>\<^sub>P\<rangle>; distinct A\<^sub>P; A\<^sub>P \<sharp>* P; A\<^sub>P \<sharp>* Q; A\<^sub>P \<sharp>* \<Psi>; A\<^sub>P \<sharp>* \<alpha>; A\<^sub>P \<sharp>* Q'; distinct (bn \<alpha>); bn \<alpha> \<sharp>* \<Psi>; bn \<alpha> \<sharp>* \<Psi>\<^sub>P; bn \<alpha> \<sharp>* P; bn \<alpha> \<sharp>* Q; bn \<alpha> \<sharp>* subject \<alpha>\<rbrakk> \<Longrightarrow> P y \<Psi> (P \<parallel> Q) (\<alpha> \<prec> P \<parallel> Q')"   and "\<And>\<Psi> \<Psi>\<^sub>Q P M N P' A\<^sub>P \<Psi>\<^sub>P Q K xvec Q' A\<^sub>Q y. \<lbrakk>A\<^sub>P \<sharp>* y; A\<^sub>Q \<sharp>* y; xvec \<sharp>* y; \<Psi> \<otimes> \<Psi>\<^sub>Q \<rhd> P \<longmapsto> M\<lparr>N\<rparr> \<prec> P'; \<And>z. P z (\<Psi> \<otimes> \<Psi>\<^sub>Q) P (M\<lparr>N\<rparr> \<prec> P'); extractFrame P = \<langle>A\<^sub>P, \<Psi>\<^sub>P\<rangle>; distinct A\<^sub>P; \<Psi> \<otimes> \<Psi>\<^sub>P \<rhd> Q \<longmapsto> K\<lparr>\<nu>*xvec\<rparr>\<langle>N\<rangle> \<prec> Q'; \<And>z. P z (\<Psi> \<otimes> \<Psi>\<^sub>P) Q (K\<lparr>\<nu>*xvec\<rparr>\<langle>N\<rangle> \<prec> Q'); extractFrame Q = \<langle>A\<^sub>Q, \<Psi>\<^sub>Q\<rangle>; distinct A\<^sub>Q; \<Psi> \<otimes> \<Psi>\<^sub>P \<otimes> \<Psi>\<^sub>Q \<turnstile> M \<leftrightarrow> K; A\<^sub>P \<sharp>* \<Psi>; A\<^sub>P \<sharp>* \<Psi>\<^sub>Q; A\<^sub>P \<sharp>* P; A\<^sub>P \<sharp>* M; A\<^sub>P \<sharp>* N; A\<^sub>P \<sharp>* P'; A\<^sub>P \<sharp>* Q; A\<^sub>P \<sharp>* Q'; A\<^sub>P \<sharp>* A\<^sub>Q; A\<^sub>P \<sharp>* xvec; A\<^sub>Q \<sharp>* \<Psi>; A\<^sub>Q \<sharp>* \<Psi>\<^sub>P; A\<^sub>Q \<sharp>* P; A\<^sub>Q \<sharp>* N; A\<^sub>Q \<sharp>* P'; A\<^sub>Q \<sharp>* Q; A\<^sub>Q \<sharp>* K; A\<^sub>Q \<sharp>* Q'; A\<^sub>Q \<sharp>* xvec; distinct xvec; xvec \<sharp>* \<Psi>; xvec \<sharp>* \<Psi>\<^sub>P; xvec \<sharp>* \<Psi>\<^sub>Q; xvec \<sharp>* P; xvec \<sharp>* M; xvec \<sharp>* Q; xvec \<sharp>* K\<rbrakk> \<Longrightarrow> P y \<Psi> (P \<parallel> Q) (\<tau> \<prec> \<lparr>\<nu>*xvec\<rparr>P' \<parallel> Q')"   and "\<And>\<Psi> \<Psi>\<^sub>Q P M xvec N P' A\<^sub>P \<Psi>\<^sub>P Q K Q' A\<^sub>Q y. \<lbrakk>A\<^sub>P \<sharp>* y; A\<^sub>Q \<sharp>* y; xvec \<sharp>* y; \<Psi> \<otimes> \<Psi>\<^sub>Q \<rhd> P \<longmapsto> M\<lparr>\<nu>*xvec\<rparr>\<langle>N\<rangle> \<prec> P'; \<And>z. P z (\<Psi> \<otimes> \<Psi>\<^sub>Q) P (M\<lparr>\<nu>*xvec\<rparr>\<langle>N\<rangle> \<prec> P'); extractFrame P = \<langle>A\<^sub>P, \<Psi>\<^sub>P\<rangle>; distinct A\<^sub>P; \<Psi> \<otimes> \<Psi>\<^sub>P \<rhd> Q \<longmapsto> K\<lparr>N\<rparr> \<prec> Q'; \<And>z. P z (\<Psi> \<otimes> \<Psi>\<^sub>P) Q (K\<lparr>N\<rparr> \<prec> Q'); extractFrame Q = \<langle>A\<^sub>Q, \<Psi>\<^sub>Q\<rangle>; distinct A\<^sub>Q; \<Psi> \<otimes> \<Psi>\<^sub>P \<otimes> \<Psi>\<^sub>Q \<turnstile> M \<leftrightarrow> K; A\<^sub>P \<sharp>* \<Psi>; A\<^sub>P \<sharp>* \<Psi>\<^sub>Q; A\<^sub>P \<sharp>* P; A\<^sub>P \<sharp>* M; A\<^sub>P \<sharp>* N; A\<^sub>P \<sharp>* P'; A\<^sub>P \<sharp>* Q; A\<^sub>P \<sharp>* Q'; A\<^sub>P \<sharp>* A\<^sub>Q; A\<^sub>P \<sharp>* xvec; A\<^sub>Q \<sharp>* \<Psi>; A\<^sub>Q \<sharp>* \<Psi>\<^sub>P; A\<^sub>Q \<sharp>* P; A\<^sub>Q \<sharp>* N; A\<^sub>Q \<sharp>* P'; A\<^sub>Q \<sharp>* Q; A\<^sub>Q \<sharp>* K; A\<^sub>Q \<sharp>* Q'; A\<^sub>Q \<sharp>* xvec; distinct xvec; xvec \<sharp>* \<Psi>; xvec \<sharp>* \<Psi>\<^sub>P; xvec \<sharp>* \<Psi>\<^sub>Q; xvec \<sharp>* P; xvec \<sharp>* M; xvec \<sharp>* Q; xvec \<sharp>* K\<rbrakk> \<Longrightarrow> P y \<Psi> (P \<parallel> Q) (\<tau> \<prec> \<lparr>\<nu>*xvec\<rparr>P' \<parallel> Q')"   and "\<And>\<Psi> P M xvec yvec N P' x y. \<lbrakk>x \<sharp> y; xvec \<sharp>* y; yvec \<sharp>* y; \<Psi> \<rhd> P \<longmapsto> M\<lparr>\<nu>*(xvec @ yvec)\<rparr>\<langle>N\<rangle> \<prec> P'; \<And>z. P z \<Psi> P (M\<lparr>\<nu>*(xvec @ yvec)\<rparr>\<langle>N\<rangle> \<prec> P'); x \<in> supp N; x \<sharp> xvec; x \<sharp> yvec; x \<sharp> M; x \<sharp> \<Psi>; distinct xvec; distinct yvec; xvec \<sharp>* \<Psi>; xvec \<sharp>* P; xvec \<sharp>* M; xvec \<sharp>* yvec; yvec \<sharp>* \<Psi>; yvec \<sharp>* P; yvec \<sharp>* M\<rbrakk> \<Longrightarrow> P y \<Psi> (\<lparr>\<nu>x\<rparr>P) (M\<lparr>\<nu>*(xvec @ x # yvec)\<rparr>\<langle>N\<rangle> \<prec> P')"   and "\<And>\<Psi> P \<alpha> P' x y. \<lbrakk>x \<sharp> y; bn \<alpha> \<sharp>* y; \<Psi> \<rhd> P \<longmapsto> \<alpha> \<prec> P'; \<And>z. P z \<Psi> P (\<alpha> \<prec> P'); x \<sharp> \<Psi>; x \<sharp> \<alpha>; bn \<alpha> \<sharp>* \<Psi>; bn \<alpha> \<sharp>* P; bn \<alpha> \<sharp>* subject \<alpha>; distinct (bn \<alpha>)\<rbrakk> \<Longrightarrow> P y \<Psi> (\<lparr>\<nu>x\<rparr>P) (\<alpha> \<prec> \<lparr>\<nu>x\<rparr>P')"   and "\<And>\<Psi> P Rs y. \<lbrakk>\<Psi> \<rhd> P \<parallel> !P \<longmapsto> Rs; \<And>z. P z \<Psi> (P \<parallel> !P) Rs; guarded P\<rbrakk> \<Longrightarrow> P y \<Psi> (!P) Rs" shows "P z x1 x2 x3"