induct: fixes x1 :: "'b formula list"   and x2 :: "'b formula list"   and P :: "'b formula list \<Rightarrow> 'b formula list \<Rightarrow> bool" assumes "x1 \<Rightarrow> x2"   and "\<And>\<DD>. P [\<DD>] [\<DD>]"   and "P [\<bottom>] []"   and "\<And>\<Gamma> \<Theta> \<DD>. \<lbrakk>\<Gamma> \<Rightarrow> \<Theta>; P \<Gamma> \<Theta>\<rbrakk> \<Longrightarrow> P (\<DD> # \<Gamma>) \<Theta>"   and "\<And>\<Gamma> \<Theta> \<DD>. \<lbrakk>\<Gamma> \<Rightarrow> \<Theta>; P \<Gamma> \<Theta>\<rbrakk> \<Longrightarrow> P \<Gamma> (\<DD> # \<Theta>)"   and "\<And>\<DD> \<Gamma> \<Theta>. \<lbrakk>\<DD> # \<DD> # \<Gamma> \<Rightarrow> \<Theta>; P (\<DD> # \<DD> # \<Gamma>) \<Theta>\<rbrakk> \<Longrightarrow> P (\<DD> # \<Gamma>) \<Theta>"   and "\<And>\<Gamma> \<DD> \<Theta>. \<lbrakk>\<Gamma> \<Rightarrow> \<DD> # \<DD> # \<Theta>; P \<Gamma> (\<DD> # \<DD> # \<Theta>)\<rbrakk> \<Longrightarrow> P \<Gamma> (\<DD> # \<Theta>)"   and "\<And>\<Delta> \<DD> \<EE> \<Gamma> \<Theta>. \<lbrakk>\<Delta> @ \<DD> # \<EE> # \<Gamma> \<Rightarrow> \<Theta>; P (\<Delta> @ \<DD> # \<EE> # \<Gamma>) \<Theta>\<rbrakk> \<Longrightarrow> P (\<Delta> @ \<EE> # \<DD> # \<Gamma>) \<Theta>"   and "\<And>\<Gamma> \<Theta> \<EE> \<DD> \<Lambda>. \<lbrakk>\<Gamma> \<Rightarrow> \<Theta> @ \<EE> # \<DD> # \<Lambda>; P \<Gamma> (\<Theta> @ \<EE> # \<DD> # \<Lambda>)\<rbrakk> \<Longrightarrow> P \<Gamma> (\<Theta> @ \<DD> # \<EE> # \<Lambda>)"   and "\<And>\<Gamma> \<DD> \<Theta> \<Delta> \<Lambda>. \<lbrakk>\<Gamma> \<Rightarrow> \<DD> # \<Theta>; P \<Gamma> (\<DD> # \<Theta>); \<DD> # \<Delta> \<Rightarrow> \<Lambda>; P (\<DD> # \<Delta>) \<Lambda>\<rbrakk> \<Longrightarrow> P (\<Gamma> @ \<Delta>) (\<Theta> @ \<Lambda>)"   and "\<And>\<Gamma> \<AA> \<Theta> \<BB>. \<lbrakk>\<Gamma> \<Rightarrow> \<AA> # \<Theta>; P \<Gamma> (\<AA> # \<Theta>); \<Gamma> \<Rightarrow> \<BB> # \<Theta>; P \<Gamma> (\<BB> # \<Theta>)\<rbrakk> \<Longrightarrow> P \<Gamma> (\<AA> \<^bold>\<and> \<BB> # \<Theta>)"   and "\<And>\<AA> \<Gamma> \<Theta> \<BB>. \<lbrakk>\<AA> # \<Gamma> \<Rightarrow> \<Theta>; P (\<AA> # \<Gamma>) \<Theta>\<rbrakk> \<Longrightarrow> P (\<AA> \<^bold>\<and> \<BB> # \<Gamma>) \<Theta>"   and "\<And>\<BB> \<Gamma> \<Theta> \<AA>. \<lbrakk>\<BB> # \<Gamma> \<Rightarrow> \<Theta>; P (\<BB> # \<Gamma>) \<Theta>\<rbrakk> \<Longrightarrow> P (\<AA> \<^bold>\<and> \<BB> # \<Gamma>) \<Theta>"   and "\<And>\<AA> \<Gamma> \<Theta> \<BB>. \<lbrakk>\<AA> # \<Gamma> \<Rightarrow> \<Theta>; P (\<AA> # \<Gamma>) \<Theta>; \<BB> # \<Gamma> \<Rightarrow> \<Theta>; P (\<BB> # \<Gamma>) \<Theta>\<rbrakk> \<Longrightarrow> P (\<AA> \<^bold>\<or> \<BB> # \<Gamma>) \<Theta>"   and "\<And>\<Gamma> \<AA> \<Theta> \<BB>. \<lbrakk>\<Gamma> \<Rightarrow> \<AA> # \<Theta>; P \<Gamma> (\<AA> # \<Theta>)\<rbrakk> \<Longrightarrow> P \<Gamma> (\<AA> \<^bold>\<or> \<BB> # \<Theta>)"   and "\<And>\<Gamma> \<BB> \<Theta> \<AA>. \<lbrakk>\<Gamma> \<Rightarrow> \<BB> # \<Theta>; P \<Gamma> (\<BB> # \<Theta>)\<rbrakk> \<Longrightarrow> P \<Gamma> (\<AA> \<^bold>\<or> \<BB> # \<Theta>)"   and "\<And>\<AA> \<Gamma> \<BB> \<Theta>. \<lbrakk>\<AA> # \<Gamma> \<Rightarrow> \<BB> # \<Theta>; P (\<AA> # \<Gamma>) (\<BB> # \<Theta>)\<rbrakk> \<Longrightarrow> P \<Gamma> (\<AA> \<^bold>\<rightarrow> \<BB> # \<Theta>)"   and "\<And>\<Gamma> \<AA> \<Theta> \<BB> \<Delta> \<Lambda>. \<lbrakk>\<Gamma> \<Rightarrow> \<AA> # \<Theta>; P \<Gamma> (\<AA> # \<Theta>); \<BB> # \<Delta> \<Rightarrow> \<Lambda>; P (\<BB> # \<Delta>) \<Lambda>\<rbrakk> \<Longrightarrow> P (\<AA> \<^bold>\<rightarrow> \<BB> # \<Gamma> @ \<Delta>) (\<Theta> @ \<Lambda>)"   and "\<And>\<AA> \<Gamma> \<Theta>. \<lbrakk>\<AA> # \<Gamma> \<Rightarrow> \<Theta>; P (\<AA> # \<Gamma>) \<Theta>\<rbrakk> \<Longrightarrow> P \<Gamma> (\<^bold>\<not> \<AA> # \<Theta>)"   and "\<And>\<Gamma> \<AA> \<Theta>. \<lbrakk>\<Gamma> \<Rightarrow> \<AA> # \<Theta>; P \<Gamma> (\<AA> # \<Theta>)\<rbrakk> \<Longrightarrow> P (\<^bold>\<not> \<AA> # \<Gamma>) \<Theta>" shows "P x1 x2"