induct: fixes P :: "fm \<Rightarrow> bool"   and a0 :: "fm" assumes "\<And>p q. \<lbrakk>\<And>x. P p; \<And>x. P q\<rbrakk> \<Longrightarrow> P (And p q)"   and "\<And>p q. \<lbrakk>\<And>x. P p; \<And>x. P q\<rbrakk> \<Longrightarrow> P (Or p q)"   and "\<And>c e. P (Eq (CN 0 c e))"   and "\<And>c e. P (NEq (CN 0 c e))"   and "\<And>c e. P (Lt (CN 0 c e))"   and "\<And>c e. P (Le (CN 0 c e))"   and "\<And>c e. P (Gt (CN 0 c e))"   and "\<And>c e. P (Ge (CN 0 c e))"   and "\<And>i c e. P (Dvd i (CN 0 c e))"   and "\<And>i c e. P (NDvd i (CN 0 c e))"   and "P T"   and "P F"   and "\<And>va. P (Lt (C va))"   and "\<And>va. P (Lt (Bound va))"   and "\<And>vd vb vc. P (Lt (CN (Suc vd) vb vc))"   and "\<And>va. P (Lt (Neg va))"   and "\<And>va vb. P (Lt (Add va vb))"   and "\<And>va vb. P (Lt (Sub va vb))"   and "\<And>va vb. P (Lt (Mul va vb))"   and "\<And>va. P (Lt (Floor va))"   and "\<And>va vb vc. P (Lt (CF va vb vc))"   and "\<And>va. P (Le (C va))"   and "\<And>va. P (Le (Bound va))"   and "\<And>vd vb vc. P (Le (CN (Suc vd) vb vc))"   and "\<And>va. P (Le (Neg va))"   and "\<And>va vb. P (Le (Add va vb))"   and "\<And>va vb. P (Le (Sub va vb))"   and "\<And>va vb. P (Le (Mul va vb))"   and "\<And>va. P (Le (Floor va))"   and "\<And>va vb vc. P (Le (CF va vb vc))"   and "\<And>va. P (Gt (C va))"   and "\<And>va. P (Gt (Bound va))"   and "\<And>vd vb vc. P (Gt (CN (Suc vd) vb vc))"   and "\<And>va. P (Gt (Neg va))"   and "\<And>va vb. P (Gt (Add va vb))"   and "\<And>va vb. P (Gt (Sub va vb))"   and "\<And>va vb. P (Gt (Mul va vb))"   and "\<And>va. P (Gt (Floor va))"   and "\<And>va vb vc. P (Gt (CF va vb vc))"   and "\<And>va. P (Ge (C va))"   and "\<And>va. P (Ge (Bound va))"   and "\<And>vd vb vc. P (Ge (CN (Suc vd) vb vc))"   and "\<And>va. P (Ge (Neg va))"   and "\<And>va vb. P (Ge (Add va vb))"   and "\<And>va vb. P (Ge (Sub va vb))"   and "\<And>va vb. P (Ge (Mul va vb))"   and "\<And>va. P (Ge (Floor va))"   and "\<And>va vb vc. P (Ge (CF va vb vc))"   and "\<And>va. P (Eq (C va))"   and "\<And>va. P (Eq (Bound va))"   and "\<And>vd vb vc. P (Eq (CN (Suc vd) vb vc))"   and "\<And>va. P (Eq (Neg va))"   and "\<And>va vb. P (Eq (Add va vb))"   and "\<And>va vb. P (Eq (Sub va vb))"   and "\<And>va vb. P (Eq (Mul va vb))"   and "\<And>va. P (Eq (Floor va))"   and "\<And>va vb vc. P (Eq (CF va vb vc))"   and "\<And>va. P (NEq (C va))"   and "\<And>va. P (NEq (Bound va))"   and "\<And>vd vb vc. P (NEq (CN (Suc vd) vb vc))"   and "\<And>va. P (NEq (Neg va))"   and "\<And>va vb. P (NEq (Add va vb))"   and "\<And>va vb. P (NEq (Sub va vb))"   and "\<And>va vb. P (NEq (Mul va vb))"   and "\<And>va. P (NEq (Floor va))"   and "\<And>va vb vc. P (NEq (CF va vb vc))"   and "\<And>v vb. P (Dvd v (C vb))"   and "\<And>v vb. P (Dvd v (Bound vb))"   and "\<And>v ve vc vd. P (Dvd v (CN (Suc ve) vc vd))"   and "\<And>v vb. P (Dvd v (Neg vb))"   and "\<And>v vb vc. P (Dvd v (Add vb vc))"   and "\<And>v vb vc. P (Dvd v (Sub vb vc))"   and "\<And>v vb vc. P (Dvd v (Mul vb vc))"   and "\<And>v vb. P (Dvd v (Floor vb))"   and "\<And>v vb vc vd. P (Dvd v (CF vb vc vd))"   and "\<And>v vb. P (NDvd v (C vb))"   and "\<And>v vb. P (NDvd v (Bound vb))"   and "\<And>v ve vc vd. P (NDvd v (CN (Suc ve) vc vd))"   and "\<And>v vb. P (NDvd v (Neg vb))"   and "\<And>v vb vc. P (NDvd v (Add vb vc))"   and "\<And>v vb vc. P (NDvd v (Sub vb vc))"   and "\<And>v vb vc. P (NDvd v (Mul vb vc))"   and "\<And>v vb. P (NDvd v (Floor vb))"   and "\<And>v vb vc vd. P (NDvd v (CF vb vc vd))"   and "\<And>v. P (NOT v)"   and "\<And>v va. P (Imp v va)"   and "\<And>v va. P (Iff v va)"   and "\<And>v. P (E v)"   and "\<And>v. P (A v)" shows "P a0"