induct: fixes x1 :: "((Var \<Rightarrow> Val) \<Rightarrow> (Var \<Rightarrow> Val) \<Rightarrow> bool) set"   and x2 :: "IMP"   and x3 :: "(Var \<Rightarrow> Val) \<Rightarrow> (Var \<Rightarrow> Val) \<Rightarrow> bool"   and P :: "((Var \<Rightarrow> Val) \<Rightarrow> (Var \<Rightarrow> Val) \<Rightarrow> bool) set \<Rightarrow> IMP \<Rightarrow> ((Var \<Rightarrow> Val) \<Rightarrow> (Var \<Rightarrow> Val) \<Rightarrow> bool) \<Rightarrow> bool" assumes "(x1, x2, x3) \<in> Deriv"   and "\<And>\<Omega> G q X p H. \<Omega> = (\<lambda>(s, t). EQ G q s t) \<Longrightarrow> P X Skip (Sec (Q p H) (EQ G q) (EQ G q) \<Omega>)"   and "\<And>H G x p t e \<Omega> q X. \<lbrakk>H = upd G x (LUB p t); \<forall>s ss. EQ G t s ss \<longrightarrow> evalE e s = evalE e ss; \<Omega> = (\<lambda>(s, t). \<exists>r. s = update r x (evalE e r) \<and> EQ G q r t)\<rbrakk> \<Longrightarrow> P X (Assign x e) (Sec (Q p H) (EQ G q) (EQ H q) \<Omega>)"   and "\<And>X c p K G q \<Phi> d H \<Psi> \<Omega>. \<lbrakk>(X, c, Sec (Q p K) (EQ G q) (EQ K q) \<Phi>) \<in> Deriv; P X c (Sec (Q p K) (EQ G q) (EQ K q) \<Phi>); (X, d, Sec (Q p H) (EQ K q) (EQ H q) \<Psi>) \<in> Deriv; P X d (Sec (Q p H) (EQ K q) (EQ H q) \<Psi>); \<forall>x. LEQ (G x) (K x) \<or> LEQ p (K x); \<forall>x. LEQ (K x) (H x) \<or> LEQ p (H x); \<Omega> = (\<lambda>(x, y). \<exists>z. \<Phi> (z, y) \<and> (\<forall>w. EQ K q z w \<longrightarrow> \<Psi> (x, w)))\<rbrakk> \<Longrightarrow> P X (Comp c d) (Sec (Q p H) (EQ G q) (EQ H q) \<Omega>)"   and "\<And>G p b H q X c \<Phi> d \<Psi> \<Omega>. \<lbrakk>\<forall>s ss. EQ G p s ss \<longrightarrow> evalB b s = evalB b ss; \<forall>x. LEQ (G x) (H x) \<or> LEQ p (H x); \<exists>x. LEQ p (H x) \<and> LEQ (H x) q; (X, c, Sec (Q p H) (EQ G q) (EQ H q) \<Phi>) \<in> Deriv; P X c (Sec (Q p H) (EQ G q) (EQ H q) \<Phi>); (X, d, Sec (Q p H) (EQ G q) (EQ H q) \<Psi>) \<in> Deriv; P X d (Sec (Q p H) (EQ G q) (EQ H q) \<Psi>); \<Omega> = (\<lambda>(r, u). (evalB b u \<longrightarrow> \<Phi> (r, u)) \<and> (\<not> evalB b u \<longrightarrow> \<Psi> (r, u)))\<rbrakk> \<Longrightarrow> P X (Iff b c d) (Sec (Q p H) (EQ G q) (EQ H q) \<Omega>)"   and "\<And>G H p q X c \<Phi> d \<Psi> \<Omega> b. \<lbrakk>\<forall>x. LEQ (G x) (H x) \<or> LEQ p (H x); \<nexists>x. LEQ p (H x) \<and> LEQ (H x) q; (X, c, Sec (Q p H) (EQ G q) (EQ H q) \<Phi>) \<in> Deriv; P X c (Sec (Q p H) (EQ G q) (EQ H q) \<Phi>); (X, d, Sec (Q p H) (EQ G q) (EQ H q) \<Psi>) \<in> Deriv; P X d (Sec (Q p H) (EQ G q) (EQ H q) \<Psi>); \<Omega> = (\<lambda>(s, t). EQ H q s t)\<rbrakk> \<Longrightarrow> P X (Iff b c d) (Sec (Q p H) (EQ G q) (EQ H q) \<Omega>)"   and "\<And>X c p G q \<Phi> b \<Omega>. \<lbrakk>(X, c, Sec (Q p G) (EQ G q) (EQ G q) \<Phi>) \<in> Deriv; P X c (Sec (Q p G) (EQ G q) (EQ G q) \<Phi>); \<forall>s ss. EQ G p s ss \<longrightarrow> evalB b s = evalB b ss; LEQ p q; \<Omega> = (\<lambda>(s, t). (b, EQ G q, \<Phi>, s, t) \<in> var)\<rbrakk> \<Longrightarrow> P X (While b c) (Sec (Q p G) (EQ G q) (EQ G q) \<Omega>)"   and "\<And>X c p G q \<Phi> \<Omega> b. \<lbrakk>(X, c, Sec (Q p G) (EQ G q) (EQ G q) \<Phi>) \<in> Deriv; P X c (Sec (Q p G) (EQ G q) (EQ G q) \<Phi>); \<not> LEQ p q; \<Omega> = (\<lambda>(s, t). EQ G q s t)\<rbrakk> \<Longrightarrow> P X (While b c) (Sec (Q p G) (EQ G q) (EQ G q) \<Omega>)"   and "\<And>p pp G GG HH H X c q \<Phi>. \<lbrakk>LEQ p pp; \<forall>x. LEQ (G x) (GG x); \<forall>x. LEQ (HH x) (H x); (X, c, Sec (Q pp HH) (EQ GG q) (EQ HH q) \<Phi>) \<in> Deriv; P X c (Sec (Q pp HH) (EQ GG q) (EQ HH q) \<Phi>)\<rbrakk> \<Longrightarrow> P X c (Sec (Q p H) (EQ G q) (EQ H q) \<Phi>)"   and "\<And>A X. \<lbrakk>({A} \<union> X, body, A) \<in> Deriv; P ({A} \<union> X) body A\<rbrakk> \<Longrightarrow> P X Call A" shows "P x1 x2 x3"