strong_induct: fixes x1 :: "pi"   and x2 :: "residual"   and P :: "'b \<Rightarrow> pi \<Rightarrow> residual \<Rightarrow> bool"   and z :: "'b" assumes "x1 \<longmapsto> x2"   and "\<And>P y. P y (\<tau>.P) (\<tau> \<prec> P)"   and "\<And>x a P y. \<lbrakk>x \<sharp> y; x \<noteq> a\<rbrakk> \<Longrightarrow> P y (a<x>.P) (a<x> \<prec> P)"   and "\<And>a b P y. P y (a{b}.P) (a[b] \<prec> P)"   and "\<And>P Rs b y. \<lbrakk>P \<longmapsto> Rs; \<And>z. P z P Rs\<rbrakk> \<Longrightarrow> P y ([b\<frown>b]P) Rs"   and "\<And>P Rs a b y. \<lbrakk>P \<longmapsto> Rs; \<And>z. P z P Rs; a \<noteq> b\<rbrakk> \<Longrightarrow> P y ([a\<noteq>b]P) Rs"   and "\<And>P a b P' y. \<lbrakk>b \<sharp> y; P \<longmapsto> a[b] \<prec> P'; \<And>z. P z P (a[b] \<prec> P'); a \<noteq> b\<rbrakk> \<Longrightarrow> P y (<\<nu>b>P) (a<\<nu>b> \<prec> P')"   and "\<And>P Rs Q y. \<lbrakk>P \<longmapsto> Rs; \<And>z. P z P Rs\<rbrakk> \<Longrightarrow> P y (P \<oplus> Q) Rs"   and "\<And>Q Rs P y. \<lbrakk>Q \<longmapsto> Rs; \<And>z. P z Q Rs\<rbrakk> \<Longrightarrow> P y (P \<oplus> Q) Rs"   and "\<And>P a x P' Q y. \<lbrakk>x \<sharp> y; P \<longmapsto> a\<guillemotleft>x\<guillemotright> \<prec> P'; \<And>z. P z P (a\<guillemotleft>x\<guillemotright> \<prec> P'); x \<sharp> P; x \<sharp> Q; x \<sharp> a\<rbrakk> \<Longrightarrow> P y (P \<parallel> Q) (a\<guillemotleft>x\<guillemotright> \<prec> P' \<parallel> Q)"   and "\<And>P \<alpha> P' Q y. \<lbrakk>P \<longmapsto> \<alpha> \<prec> P'; \<And>z. P z P (\<alpha> \<prec> P')\<rbrakk> \<Longrightarrow> P y (P \<parallel> Q) (\<alpha> \<prec> P' \<parallel> Q)"   and "\<And>Q a x Q' P y. \<lbrakk>x \<sharp> y; Q \<longmapsto> a\<guillemotleft>x\<guillemotright> \<prec> Q'; \<And>z. P z Q (a\<guillemotleft>x\<guillemotright> \<prec> Q'); x \<sharp> P; x \<sharp> Q; x \<sharp> a\<rbrakk> \<Longrightarrow> P y (P \<parallel> Q) (a\<guillemotleft>x\<guillemotright> \<prec> P \<parallel> Q')"   and "\<And>Q \<alpha> Q' P y. \<lbrakk>Q \<longmapsto> \<alpha> \<prec> Q'; \<And>z. P z Q (\<alpha> \<prec> Q')\<rbrakk> \<Longrightarrow> P y (P \<parallel> Q) (\<alpha> \<prec> P \<parallel> Q')"   and "\<And>P a x P' Q b Q' y. \<lbrakk>x \<sharp> y; P \<longmapsto> a<x> \<prec> P'; \<And>z. P z P (a<x> \<prec> P'); Q \<longmapsto> a[b] \<prec> Q'; \<And>z. P z Q (a[b] \<prec> Q'); x \<sharp> P; x \<sharp> Q; x \<noteq> a; x \<noteq> b; x \<sharp> Q'\<rbrakk> \<Longrightarrow> P y (P \<parallel> Q) (\<tau> \<prec> P'[x::=b] \<parallel> Q')"   and "\<And>P a b P' Q x Q' y. \<lbrakk>x \<sharp> y; P \<longmapsto> a[b] \<prec> P'; \<And>z. P z P (a[b] \<prec> P'); Q \<longmapsto> a<x> \<prec> Q'; \<And>z. P z Q (a<x> \<prec> Q'); x \<sharp> P; x \<sharp> Q; x \<noteq> a; x \<noteq> b; x \<sharp> P'\<rbrakk> \<Longrightarrow> P y (P \<parallel> Q) (\<tau> \<prec> P' \<parallel> Q'[x::=b])"   and "\<And>P a x P' Q y Q' ya. \<lbrakk>y \<sharp> ya; x \<sharp> ya; y \<noteq> x; P \<longmapsto> a<x> \<prec> P'; \<And>z. P z P (a<x> \<prec> P'); Q \<longmapsto> a<\<nu>y> \<prec> Q'; \<And>z. P z Q (a<\<nu>y> \<prec> Q'); x \<sharp> P; x \<sharp> Q; y \<sharp> P; y \<sharp> Q; x \<noteq> a; x \<sharp> Q'; y \<noteq> a; y \<sharp> P'; x \<noteq> y\<rbrakk> \<Longrightarrow> P ya (P \<parallel> Q) (\<tau> \<prec> <\<nu>y>(P'[x::=y] \<parallel> Q'))"   and "\<And>P a y P' Q x Q' ya. \<lbrakk>x \<sharp> ya; y \<sharp> ya; x \<noteq> y; P \<longmapsto> a<\<nu>y> \<prec> P'; \<And>z. P z P (a<\<nu>y> \<prec> P'); Q \<longmapsto> a<x> \<prec> Q'; \<And>z. P z Q (a<x> \<prec> Q'); x \<sharp> P; x \<sharp> Q; y \<sharp> P; y \<sharp> Q; x \<noteq> a; x \<sharp> P'; y \<noteq> a; y \<sharp> Q'; x \<noteq> y\<rbrakk> \<Longrightarrow> P ya (P \<parallel> Q) (\<tau> \<prec> <\<nu>y>(P' \<parallel> Q'[x::=y]))"   and "\<And>P a x P' y ya. \<lbrakk>y \<sharp> ya; x \<sharp> ya; y \<noteq> x; P \<longmapsto> a\<guillemotleft>x\<guillemotright> \<prec> P'; \<And>z. P z P (a\<guillemotleft>x\<guillemotright> \<prec> P'); y \<sharp> a; y \<noteq> x; x \<sharp> P; x \<sharp> a\<rbrakk> \<Longrightarrow> P ya (<\<nu>y>P) (a\<guillemotleft>x\<guillemotright> \<prec> <\<nu>y>P')"   and "\<And>P \<alpha> P' y ya. \<lbrakk>y \<sharp> ya; P \<longmapsto> \<alpha> \<prec> P'; \<And>z. P z P (\<alpha> \<prec> P'); y \<sharp> \<alpha>\<rbrakk> \<Longrightarrow> P ya (<\<nu>y>P) (\<alpha> \<prec> <\<nu>y>P')"   and "\<And>P Rs y. \<lbrakk>P \<parallel> !P \<longmapsto> Rs; \<And>z. P z (P \<parallel> !P) Rs\<rbrakk> \<Longrightarrow> P y (!P) Rs" shows "P z x1 x2"