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 u P y. \<lbrakk>x \<sharp> y; x \<noteq> a; x \<noteq> u\<rbrakk> \<Longrightarrow> P y (a<x>.P) (a<u> \<prec> P[x::=u])"   and "\<And>a b P y. P y (a{b}.P) (a[b] \<prec> P)"   and "\<And>P V b y. \<lbrakk>P \<longmapsto> V; \<And>z. P z P V\<rbrakk> \<Longrightarrow> P y ([b\<frown>b]P) V"   and "\<And>P V a b y. \<lbrakk>P \<longmapsto> V; \<And>z. P z P V; a \<noteq> b\<rbrakk> \<Longrightarrow> P y ([a\<noteq>b]P) V"   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 V Q y. \<lbrakk>P \<longmapsto> V; \<And>z. P z P V\<rbrakk> \<Longrightarrow> P y (P \<oplus> Q) V"   and "\<And>Q V P y. \<lbrakk>Q \<longmapsto> V; \<And>z. P z Q V\<rbrakk> \<Longrightarrow> P y (P \<oplus> Q) V"   and "\<And>P a x P' Q y. \<lbrakk>x \<sharp> y; P \<longmapsto> a<\<nu>x> \<prec> P'; \<And>z. P z P (a<\<nu>x> \<prec> P'); x \<sharp> P; x \<sharp> Q; x \<noteq> a\<rbrakk> \<Longrightarrow> P y (P \<parallel> Q) (a<\<nu>x> \<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<\<nu>x> \<prec> Q'; \<And>z. P z Q (a<\<nu>x> \<prec> Q'); x \<sharp> P; x \<sharp> Q; x \<noteq> a\<rbrakk> \<Longrightarrow> P y (P \<parallel> Q) (a<\<nu>x> \<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 b P' Q Q' y. \<lbrakk>P \<longmapsto> a<b> \<prec> P'; \<And>z. P z P (a<b> \<prec> P'); Q \<longmapsto> a[b] \<prec> Q'; \<And>z. P z Q (a[b] \<prec> Q')\<rbrakk> \<Longrightarrow> P y (P \<parallel> Q) (\<tau> \<prec> P' \<parallel> Q')"   and "\<And>P a b P' Q Q' y. \<lbrakk>P \<longmapsto> a[b] \<prec> P'; \<And>z. P z P (a[b] \<prec> P'); Q \<longmapsto> a<b> \<prec> Q'; \<And>z. P z Q (a<b> \<prec> Q')\<rbrakk> \<Longrightarrow> P y (P \<parallel> Q) (\<tau> \<prec> P' \<parallel> Q')"   and "\<And>P a x P' Q Q' y. \<lbrakk>x \<sharp> y; P \<longmapsto> a<x> \<prec> P'; \<And>z. P z P (a<x> \<prec> P'); Q \<longmapsto> a<\<nu>x> \<prec> Q'; \<And>z. P z Q (a<\<nu>x> \<prec> Q'); x \<sharp> P; x \<sharp> Q; x \<noteq> a\<rbrakk> \<Longrightarrow> P y (P \<parallel> Q) (\<tau> \<prec> <\<nu>x>(P' \<parallel> Q'))"   and "\<And>P a x P' Q Q' y. \<lbrakk>x \<sharp> y; P \<longmapsto> a<\<nu>x> \<prec> P'; \<And>z. P z P (a<\<nu>x> \<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\<rbrakk> \<Longrightarrow> P y (P \<parallel> Q) (\<tau> \<prec> <\<nu>x>(P' \<parallel> Q'))"   and "\<And>P a x P' y ya. \<lbrakk>y \<sharp> ya; x \<sharp> ya; y \<noteq> x; P \<longmapsto> a<\<nu>x> \<prec> P'; \<And>z. P z P (a<\<nu>x> \<prec> P'); y \<noteq> a; y \<noteq> x; x \<sharp> P; x \<noteq> a\<rbrakk> \<Longrightarrow> P ya (<\<nu>y>P) (a<\<nu>x> \<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 V y. \<lbrakk>P \<parallel> !P \<longmapsto> V; \<And>z. P z (P \<parallel> !P) V\<rbrakk> \<Longrightarrow> P y (!P) V" shows "P z x1 x2"