induct: fixes P :: "fm \<Rightarrow> bool"   and a0 :: "fm" assumes "P (E T)"   and "P (E F)"   and "\<And>p q. \<lbrakk>P (E p); P (E q)\<rbrakk> \<Longrightarrow> P (E (Or p q))"   and "\<And>p q. \<lbrakk>P (E (NOT p)); P (E q)\<rbrakk> \<Longrightarrow> P (E (Imp p q))"   and "\<And>p q. \<lbrakk>P (E (And p q)); P (E (And (NOT p) (NOT q)))\<rbrakk> \<Longrightarrow> P (E (Iff p q))"   and "\<And>p q. \<lbrakk>P (E (NOT p)); P (E (NOT q))\<rbrakk> \<Longrightarrow> P (E (NOT (And p q)))"   and "\<And>p q. P (E (And p (NOT q))) \<Longrightarrow> P (E (NOT (Imp p q)))"   and "\<And>p q. \<lbrakk>P (E (And p (NOT q))); P (E (And (NOT p) q))\<rbrakk> \<Longrightarrow> P (E (NOT (Iff p q)))"   and "\<And>v. P (Lt v) \<Longrightarrow> P (E (Lt v))"   and "\<And>v. P (Le v) \<Longrightarrow> P (E (Le v))"   and "\<And>v. P (Gt v) \<Longrightarrow> P (E (Gt v))"   and "\<And>v. P (Ge v) \<Longrightarrow> P (E (Ge v))"   and "\<And>v. P (Eq v) \<Longrightarrow> P (E (Eq v))"   and "\<And>v. P (NEq v) \<Longrightarrow> P (E (NEq v))"   and "\<And>v va. P (Dvd v va) \<Longrightarrow> P (E (Dvd v va))"   and "\<And>v va. P (NDvd v va) \<Longrightarrow> P (E (NDvd v va))"   and "P (NOT T) \<Longrightarrow> P (E (NOT T))"   and "P (NOT F) \<Longrightarrow> P (E (NOT F))"   and "\<And>va. P (NOT (Lt va)) \<Longrightarrow> P (E (NOT (Lt va)))"   and "\<And>va. P (NOT (Le va)) \<Longrightarrow> P (E (NOT (Le va)))"   and "\<And>va. P (NOT (Gt va)) \<Longrightarrow> P (E (NOT (Gt va)))"   and "\<And>va. P (NOT (Ge va)) \<Longrightarrow> P (E (NOT (Ge va)))"   and "\<And>va. P (NOT (Eq va)) \<Longrightarrow> P (E (NOT (Eq va)))"   and "\<And>va. P (NOT (NEq va)) \<Longrightarrow> P (E (NOT (NEq va)))"   and "\<And>va vb. P (NOT (Dvd va vb)) \<Longrightarrow> P (E (NOT (Dvd va vb)))"   and "\<And>va vb. P (NOT (NDvd va vb)) \<Longrightarrow> P (E (NOT (NDvd va vb)))"   and "\<And>va. P (NOT (NOT va)) \<Longrightarrow> P (E (NOT (NOT va)))"   and "\<And>va vb. P (NOT (Or va vb)) \<Longrightarrow> P (E (NOT (Or va vb)))"   and "\<And>va. P (NOT (E va)) \<Longrightarrow> P (E (NOT (E va)))"   and "\<And>va. P (NOT (A va)) \<Longrightarrow> P (E (NOT (A va)))"   and "\<And>va. P (NOT (Closed va)) \<Longrightarrow> P (E (NOT (Closed va)))"   and "\<And>va. P (NOT (NClosed va)) \<Longrightarrow> P (E (NOT (NClosed va)))"   and "\<And>v va. P (And v va) \<Longrightarrow> P (E (And v va))"   and "\<And>v. P (E v) \<Longrightarrow> P (E (E v))"   and "\<And>v. P (A v) \<Longrightarrow> P (E (A v))"   and "\<And>v. P (Closed v) \<Longrightarrow> P (E (Closed v))"   and "\<And>v. P (NClosed v) \<Longrightarrow> P (E (NClosed v))"   and "\<And>p q. \<lbrakk>P (A p); P (A q)\<rbrakk> \<Longrightarrow> P (A (And p q))"   and "P (NOT (E (NOT T))) \<Longrightarrow> P (A T)"   and "P (NOT (E (NOT F))) \<Longrightarrow> P (A F)"   and "\<And>v. P (NOT (E (NOT (Lt v)))) \<Longrightarrow> P (A (Lt v))"   and "\<And>v. P (NOT (E (NOT (Le v)))) \<Longrightarrow> P (A (Le v))"   and "\<And>v. P (NOT (E (NOT (Gt v)))) \<Longrightarrow> P (A (Gt v))"   and "\<And>v. P (NOT (E (NOT (Ge v)))) \<Longrightarrow> P (A (Ge v))"   and "\<And>v. P (NOT (E (NOT (Eq v)))) \<Longrightarrow> P (A (Eq v))"   and "\<And>v. P (NOT (E (NOT (NEq v)))) \<Longrightarrow> P (A (NEq v))"   and "\<And>v va. P (NOT (E (NOT (Dvd v va)))) \<Longrightarrow> P (A (Dvd v va))"   and "\<And>v va. P (NOT (E (NOT (NDvd v va)))) \<Longrightarrow> P (A (NDvd v va))"   and "\<And>v. P (NOT (E (NOT (NOT v)))) \<Longrightarrow> P (A (NOT v))"   and "\<And>v va. P (NOT (E (NOT (Or v va)))) \<Longrightarrow> P (A (Or v va))"   and "\<And>v va. P (NOT (E (NOT (Imp v va)))) \<Longrightarrow> P (A (Imp v va))"   and "\<And>v va. P (NOT (E (NOT (Iff v va)))) \<Longrightarrow> P (A (Iff v va))"   and "\<And>v. P (NOT (E (NOT (E v)))) \<Longrightarrow> P (A (E v))"   and "\<And>v. P (NOT (E (NOT (A v)))) \<Longrightarrow> P (A (A v))"   and "\<And>v. P (NOT (E (NOT (Closed v)))) \<Longrightarrow> P (A (Closed v))"   and "\<And>v. P (NOT (E (NOT (NClosed v)))) \<Longrightarrow> P (A (NClosed v))"   and "\<And>p. P p \<Longrightarrow> P (NOT (NOT p))"   and "\<And>p q. \<lbrakk>P (NOT p); P (NOT q)\<rbrakk> \<Longrightarrow> P (NOT (And p q))"   and "\<And>p. P (E (NOT p)) \<Longrightarrow> P (NOT (A p))"   and "\<And>p q. \<lbrakk>P (NOT p); P (NOT q)\<rbrakk> \<Longrightarrow> P (NOT (Or p q))"   and "\<And>p q. \<lbrakk>P p; P (NOT q)\<rbrakk> \<Longrightarrow> P (NOT (Imp p q))"   and "\<And>p q. \<lbrakk>P (And p (NOT q)); P (And (NOT p) q)\<rbrakk> \<Longrightarrow> P (NOT (Iff p q))"   and "P T \<Longrightarrow> P (NOT T)"   and "P F \<Longrightarrow> P (NOT F)"   and "\<And>v. P (Lt v) \<Longrightarrow> P (NOT (Lt v))"   and "\<And>v. P (Le v) \<Longrightarrow> P (NOT (Le v))"   and "\<And>v. P (Gt v) \<Longrightarrow> P (NOT (Gt v))"   and "\<And>v. P (Ge v) \<Longrightarrow> P (NOT (Ge v))"   and "\<And>v. P (Eq v) \<Longrightarrow> P (NOT (Eq v))"   and "\<And>v. P (NEq v) \<Longrightarrow> P (NOT (NEq v))"   and "\<And>v va. P (Dvd v va) \<Longrightarrow> P (NOT (Dvd v va))"   and "\<And>v va. P (NDvd v va) \<Longrightarrow> P (NOT (NDvd v va))"   and "\<And>v. P (E v) \<Longrightarrow> P (NOT (E v))"   and "\<And>v. P (Closed v) \<Longrightarrow> P (NOT (Closed v))"   and "\<And>v. P (NClosed v) \<Longrightarrow> P (NOT (NClosed v))"   and "\<And>p q. \<lbrakk>P p; P q\<rbrakk> \<Longrightarrow> P (Or p q)"   and "\<And>p q. \<lbrakk>P p; P q\<rbrakk> \<Longrightarrow> P (And p q)"   and "\<And>p q. P (Or (NOT p) q) \<Longrightarrow> P (Imp p q)"   and "\<And>p q. \<lbrakk>P (And p q); P (And (NOT p) (NOT q))\<rbrakk> \<Longrightarrow> P (Iff p q)"   and "P T"   and "P F"   and "\<And>v. P (Lt v)"   and "\<And>v. P (Le v)"   and "\<And>v. P (Gt v)"   and "\<And>v. P (Ge v)"   and "\<And>v. P (Eq v)"   and "\<And>v. P (NEq v)"   and "\<And>v va. P (Dvd v va)"   and "\<And>v va. P (NDvd v va)"   and "\<And>v. P (Closed v)"   and "\<And>v. P (NClosed v)" shows "P a0"