induct: fixes x1 :: "formula"   and x2 :: "fin_string + fin_string \<Rightarrow> 32 Word.word"   and x3 :: "bool"   and P :: "formula \<Rightarrow> (fin_string + fin_string \<Rightarrow> 32 Word.word) \<Rightarrow> bool \<Rightarrow> bool" assumes "[[x1]]x2 \<down> x3"   and "\<And>\<theta>\<^sub>1 \<nu> \<theta>\<^sub>2. wgreater (fst ([\<theta>\<^sub>1]<>\<nu>)) (snd ([\<theta>\<^sub>2]<>\<nu>)) \<Longrightarrow> P (Greater \<theta>\<^sub>1 \<theta>\<^sub>2) \<nu> True"   and "\<And>\<theta>\<^sub>2 \<nu> \<theta>\<^sub>1. wgeq (fst ([\<theta>\<^sub>2]<>\<nu>)) (snd ([\<theta>\<^sub>1]<>\<nu>)) \<Longrightarrow> P (Greater \<theta>\<^sub>1 \<theta>\<^sub>2) \<nu> False"   and "\<And>\<theta>\<^sub>1 \<nu> \<theta>\<^sub>2. wgeq (fst ([\<theta>\<^sub>1]<>\<nu>)) (snd ([\<theta>\<^sub>2]<>\<nu>)) \<Longrightarrow> P (Geq \<theta>\<^sub>1 \<theta>\<^sub>2) \<nu> True"   and "\<And>\<theta>\<^sub>2 \<nu> \<theta>\<^sub>1. wgreater (fst ([\<theta>\<^sub>2]<>\<nu>)) (snd ([\<theta>\<^sub>1]<>\<nu>)) \<Longrightarrow> P (Geq \<theta>\<^sub>1 \<theta>\<^sub>2) \<nu> False"   and "\<And>\<theta>\<^sub>2 \<nu> \<theta>\<^sub>1. \<lbrakk>fst ([\<theta>\<^sub>2]<>\<nu>) = snd ([\<theta>\<^sub>2]<>\<nu>); snd ([\<theta>\<^sub>2]<>\<nu>) = snd ([\<theta>\<^sub>1]<>\<nu>); snd ([\<theta>\<^sub>1]<>\<nu>) = fst ([\<theta>\<^sub>1]<>\<nu>); fst ([\<theta>\<^sub>2]<>\<nu>) \<noteq> NEG_INF; fst ([\<theta>\<^sub>2]<>\<nu>) \<noteq> POS_INF\<rbrakk> \<Longrightarrow> P (Equals \<theta>\<^sub>1 \<theta>\<^sub>2) \<nu> True"   and "\<And>\<theta>\<^sub>1 \<nu> \<theta>\<^sub>2. wgreater (fst ([\<theta>\<^sub>1]<>\<nu>)) (snd ([\<theta>\<^sub>2]<>\<nu>)) \<Longrightarrow> P (Equals \<theta>\<^sub>1 \<theta>\<^sub>2) \<nu> False"   and "\<And>\<theta>\<^sub>2 \<nu> \<theta>\<^sub>1. wgreater (fst ([\<theta>\<^sub>2]<>\<nu>)) (snd ([\<theta>\<^sub>1]<>\<nu>)) \<Longrightarrow> P (Equals \<theta>\<^sub>1 \<theta>\<^sub>2) \<nu> False"   and "\<And>\<phi> \<nu> \<psi>. \<lbrakk>[[\<phi>]]\<nu> \<down> True; P \<phi> \<nu> True; [[\<psi>]]\<nu> \<down> True; P \<psi> \<nu> True\<rbrakk> \<Longrightarrow> P (\<phi> && \<psi>) \<nu> True"   and "\<And>\<phi> \<nu> \<psi>. \<lbrakk>[[\<phi>]]\<nu> \<down> False; P \<phi> \<nu> False\<rbrakk> \<Longrightarrow> P (\<phi> && \<psi>) \<nu> False"   and "\<And>\<psi> \<nu> \<phi>. \<lbrakk>[[\<psi>]]\<nu> \<down> False; P \<psi> \<nu> False\<rbrakk> \<Longrightarrow> P (\<phi> && \<psi>) \<nu> False"   and "\<And>\<phi> \<nu> \<psi>. \<lbrakk>[[\<phi>]]\<nu> \<down> True; P \<phi> \<nu> True\<rbrakk> \<Longrightarrow> P (\<phi> || \<psi>) \<nu> True"   and "\<And>\<psi> \<nu> \<phi>. \<lbrakk>[[\<psi>]]\<nu> \<down> True; P \<psi> \<nu> True\<rbrakk> \<Longrightarrow> P (\<phi> || \<psi>) \<nu> True"   and "\<And>\<phi> \<nu> \<psi>. \<lbrakk>[[\<phi>]]\<nu> \<down> False; P \<phi> \<nu> False; [[\<psi>]]\<nu> \<down> False; P \<psi> \<nu> False\<rbrakk> \<Longrightarrow> P (\<phi> && \<psi>) \<nu> False"   and "\<And>\<phi> \<nu>. \<lbrakk>[[\<phi>]]\<nu> \<down> False; P \<phi> \<nu> False\<rbrakk> \<Longrightarrow> P (! \<phi>) \<nu> True"   and "\<And>\<phi> \<nu>. \<lbrakk>[[\<phi>]]\<nu> \<down> True; P \<phi> \<nu> True\<rbrakk> \<Longrightarrow> P (! \<phi>) \<nu> False" shows "P x1 x2 x3"