induct: fixes x1 :: "Syntax.term list"   and x2 :: "Syntax.term"   and x3 :: "mode"   and x4 :: "Syntax.term list"   and x5 :: "Syntax.term"   and P :: "Syntax.term list \<Rightarrow> Syntax.term \<Rightarrow> mode \<Rightarrow> Syntax.term list \<Rightarrow> Syntax.term \<Rightarrow> bool" assumes "\<lless>x1, x2\<ggreater> x3\<rightarrow> \<lless>x4, x5\<ggreater>"   and "\<And>\<pi> e\<^sub>1 m \<pi>' e\<^sub>1' e\<^sub>2. \<lbrakk>\<lless>\<pi>, e\<^sub>1\<ggreater> m\<rightarrow> \<lless>\<pi>', e\<^sub>1'\<ggreater>; P \<pi> e\<^sub>1 m \<pi>' e\<^sub>1'\<rbrakk> \<Longrightarrow> P \<pi> (App e\<^sub>1 e\<^sub>2) m \<pi>' (App e\<^sub>1' e\<^sub>2)"   and "\<And>v\<^sub>1 \<pi> e\<^sub>2 m \<pi>' e\<^sub>2'. \<lbrakk>value v\<^sub>1; \<lless>\<pi>, e\<^sub>2\<ggreater> m\<rightarrow> \<lless>\<pi>', e\<^sub>2'\<ggreater>; P \<pi> e\<^sub>2 m \<pi>' e\<^sub>2'\<rbrakk> \<Longrightarrow> P \<pi> (App v\<^sub>1 e\<^sub>2) m \<pi>' (App v\<^sub>1 e\<^sub>2')"   and "\<And>v x \<pi> e uu_. \<lbrakk>value v; atom x \<sharp> (v, \<pi>)\<rbrakk> \<Longrightarrow> P \<pi> (App (Lam x e) v) uu_ \<pi> (e[v / x])"   and "\<And>v x \<pi> e uv_. \<lbrakk>value v; atom x \<sharp> (v, \<pi>)\<rbrakk> \<Longrightarrow> P \<pi> (App (Rec x e) v) uv_ \<pi> (App (e[Rec x e / x]) v)"   and "\<And>x e\<^sub>1 e\<^sub>1' \<pi> \<pi>' m e\<^sub>2. \<lbrakk>atom x \<sharp> (e\<^sub>1, e\<^sub>1', \<pi>, \<pi>'); \<lless>\<pi>, e\<^sub>1\<ggreater> m\<rightarrow> \<lless>\<pi>', e\<^sub>1'\<ggreater>; P \<pi> e\<^sub>1 m \<pi>' e\<^sub>1'\<rbrakk> \<Longrightarrow> P \<pi> (Syntax.Let e\<^sub>1 x e\<^sub>2) m \<pi>' (Syntax.Let e\<^sub>1' x e\<^sub>2)"   and "\<And>v x \<pi> e uw_. \<lbrakk>value v; atom x \<sharp> (v, \<pi>)\<rbrakk> \<Longrightarrow> P \<pi> (Syntax.Let v x e) uw_ \<pi> (e[v / x])"   and "\<And>\<pi> e m \<pi>' e'. \<lbrakk>\<lless>\<pi>, e\<ggreater> m\<rightarrow> \<lless>\<pi>', e'\<ggreater>; P \<pi> e m \<pi>' e'\<rbrakk> \<Longrightarrow> P \<pi> (Inj1 e) m \<pi>' (Inj1 e')"   and "\<And>\<pi> e m \<pi>' e'. \<lbrakk>\<lless>\<pi>, e\<ggreater> m\<rightarrow> \<lless>\<pi>', e'\<ggreater>; P \<pi> e m \<pi>' e'\<rbrakk> \<Longrightarrow> P \<pi> (Inj2 e) m \<pi>' (Inj2 e')"   and "\<And>\<pi> e m \<pi>' e' e\<^sub>1 e\<^sub>2. \<lbrakk>\<lless>\<pi>, e\<ggreater> m\<rightarrow> \<lless>\<pi>', e'\<ggreater>; P \<pi> e m \<pi>' e'\<rbrakk> \<Longrightarrow> P \<pi> (Case e e\<^sub>1 e\<^sub>2) m \<pi>' (Case e' e\<^sub>1 e\<^sub>2)"   and "\<And>v \<pi> e\<^sub>1 e\<^sub>2 ux_. value v \<Longrightarrow> P \<pi> (Case (Inj1 v) e\<^sub>1 e\<^sub>2) ux_ \<pi> (App e\<^sub>1 v)"   and "\<And>v \<pi> e\<^sub>1 e\<^sub>2 uy_. value v \<Longrightarrow> P \<pi> (Case (Inj2 v) e\<^sub>1 e\<^sub>2) uy_ \<pi> (App e\<^sub>2 v)"   and "\<And>\<pi> e\<^sub>1 m \<pi>' e\<^sub>1' e\<^sub>2. \<lbrakk>\<lless>\<pi>, e\<^sub>1\<ggreater> m\<rightarrow> \<lless>\<pi>', e\<^sub>1'\<ggreater>; P \<pi> e\<^sub>1 m \<pi>' e\<^sub>1'\<rbrakk> \<Longrightarrow> P \<pi> (Syntax.Pair e\<^sub>1 e\<^sub>2) m \<pi>' (Syntax.Pair e\<^sub>1' e\<^sub>2)"   and "\<And>v\<^sub>1 \<pi> e\<^sub>2 m \<pi>' e\<^sub>2'. \<lbrakk>value v\<^sub>1; \<lless>\<pi>, e\<^sub>2\<ggreater> m\<rightarrow> \<lless>\<pi>', e\<^sub>2'\<ggreater>; P \<pi> e\<^sub>2 m \<pi>' e\<^sub>2'\<rbrakk> \<Longrightarrow> P \<pi> (Syntax.Pair v\<^sub>1 e\<^sub>2) m \<pi>' (Syntax.Pair v\<^sub>1 e\<^sub>2')"   and "\<And>\<pi> e m \<pi>' e'. \<lbrakk>\<lless>\<pi>, e\<ggreater> m\<rightarrow> \<lless>\<pi>', e'\<ggreater>; P \<pi> e m \<pi>' e'\<rbrakk> \<Longrightarrow> P \<pi> (Prj1 e) m \<pi>' (Prj1 e')"   and "\<And>\<pi> e m \<pi>' e'. \<lbrakk>\<lless>\<pi>, e\<ggreater> m\<rightarrow> \<lless>\<pi>', e'\<ggreater>; P \<pi> e m \<pi>' e'\<rbrakk> \<Longrightarrow> P \<pi> (Prj2 e) m \<pi>' (Prj2 e')"   and "\<And>v\<^sub>1 v\<^sub>2 \<pi> uz_. \<lbrakk>value v\<^sub>1; value v\<^sub>2\<rbrakk> \<Longrightarrow> P \<pi> (Prj1 (Syntax.Pair v\<^sub>1 v\<^sub>2)) uz_ \<pi> v\<^sub>1"   and "\<And>v\<^sub>1 v\<^sub>2 \<pi> va_. \<lbrakk>value v\<^sub>1; value v\<^sub>2\<rbrakk> \<Longrightarrow> P \<pi> (Prj2 (Syntax.Pair v\<^sub>1 v\<^sub>2)) va_ \<pi> v\<^sub>2"   and "\<And>\<pi> e m \<pi>' e'. \<lbrakk>\<lless>\<pi>, e\<ggreater> m\<rightarrow> \<lless>\<pi>', e'\<ggreater>; P \<pi> e m \<pi>' e'\<rbrakk> \<Longrightarrow> P \<pi> (Unroll e) m \<pi>' (Unroll e')"   and "\<And>\<pi> e m \<pi>' e'. \<lbrakk>\<lless>\<pi>, e\<ggreater> m\<rightarrow> \<lless>\<pi>', e'\<ggreater>; P \<pi> e m \<pi>' e'\<rbrakk> \<Longrightarrow> P \<pi> (Roll e) m \<pi>' (Roll e')"   and "\<And>v \<pi> vb_. value v \<Longrightarrow> P \<pi> (Unroll (Roll v)) vb_ \<pi> v"   and "\<And>\<pi> e m \<pi>' e'. \<lbrakk>\<lless>\<pi>, e\<ggreater> m\<rightarrow> \<lless>\<pi>', e'\<ggreater>; P \<pi> e m \<pi>' e'\<rbrakk> \<Longrightarrow> P \<pi> (Auth e) m \<pi>' (Auth e')"   and "\<And>\<pi> e m \<pi>' e'. \<lbrakk>\<lless>\<pi>, e\<ggreater> m\<rightarrow> \<lless>\<pi>', e'\<ggreater>; P \<pi> e m \<pi>' e'\<rbrakk> \<Longrightarrow> P \<pi> (Unauth e) m \<pi>' (Unauth e')"   and "\<And>v \<pi>. value v \<Longrightarrow> P \<pi> (Auth v) I \<pi> v"   and "\<And>v \<pi>. value v \<Longrightarrow> P \<pi> (Unauth v) I \<pi> v"   and "\<And>v \<pi>. \<lbrakk>closed \<lparr>v\<rparr>; value v\<rbrakk> \<Longrightarrow> P \<pi> (Auth v) P \<pi> (Hashed (hash \<lparr>v\<rparr>) v)"   and "\<And>v \<pi> h. value v \<Longrightarrow> P \<pi> (Unauth (Hashed h v)) P (\<pi> @ [\<lparr>v\<rparr>]) v"   and "\<And>v \<pi>. \<lbrakk>closed v; value v\<rbrakk> \<Longrightarrow> P \<pi> (Auth v) V \<pi> (Hash (hash v))"   and "\<And>s\<^sub>0 h \<pi>. \<lbrakk>closed s\<^sub>0; hash s\<^sub>0 = h\<rbrakk> \<Longrightarrow> P (s\<^sub>0 # \<pi>) (Unauth (Hash h)) V \<pi> s\<^sub>0" shows "P x1 x2 x3 x4 x5"