induct: fixes P :: "Cooper.num \<Rightarrow> Cooper.num \<Rightarrow> bool"   and a0 :: "Cooper.num"   and a1 :: "Cooper.num" assumes "\<And>n1 c1 r1 n2 c2 r2. \<lbrakk>\<And>x. \<lbrakk>n1 = n2; x = c1 + c2; x = 0\<rbrakk> \<Longrightarrow> P r1 r2; \<And>x. \<lbrakk>n1 = n2; x = c1 + c2; x \<noteq> 0\<rbrakk> \<Longrightarrow> P r1 r2; \<lbrakk>n1 \<noteq> n2; n1 \<le> n2\<rbrakk> \<Longrightarrow> P r1 (Add (Mul c2 (Bound n2)) r2); \<lbrakk>n1 \<noteq> n2; \<not> n1 \<le> n2\<rbrakk> \<Longrightarrow> P (Add (Mul c1 (Bound n1)) r1) r2\<rbrakk> \<Longrightarrow> P (CN n1 c1 r1) (CN n2 c2 r2)"   and "\<And>n1 c1 r1 v. P r1 (C v) \<Longrightarrow> P (CN n1 c1 r1) (C v)"   and "\<And>n1 c1 r1 v. P r1 (Bound v) \<Longrightarrow> P (CN n1 c1 r1) (Bound v)"   and "\<And>n1 c1 r1 v. P r1 (Neg v) \<Longrightarrow> P (CN n1 c1 r1) (Neg v)"   and "\<And>n1 c1 r1 v va. P r1 (Add v va) \<Longrightarrow> P (CN n1 c1 r1) (Add v va)"   and "\<And>n1 c1 r1 v va. P r1 (Sub v va) \<Longrightarrow> P (CN n1 c1 r1) (Sub v va)"   and "\<And>n1 c1 r1 v va. P r1 (Mul v va) \<Longrightarrow> P (CN n1 c1 r1) (Mul v va)"   and "\<And>v n2 c2 r2. P (C v) r2 \<Longrightarrow> P (C v) (CN n2 c2 r2)"   and "\<And>v n2 c2 r2. P (Bound v) r2 \<Longrightarrow> P (Bound v) (CN n2 c2 r2)"   and "\<And>v n2 c2 r2. P (Neg v) r2 \<Longrightarrow> P (Neg v) (CN n2 c2 r2)"   and "\<And>v va n2 c2 r2. P (Add v va) r2 \<Longrightarrow> P (Add v va) (CN n2 c2 r2)"   and "\<And>v va n2 c2 r2. P (Sub v va) r2 \<Longrightarrow> P (Sub v va) (CN n2 c2 r2)"   and "\<And>v va n2 c2 r2. P (Mul v va) r2 \<Longrightarrow> P (Mul v va) (CN n2 c2 r2)"   and "\<And>b1 b2. P (C b1) (C b2)"   and "\<And>v va. P (C v) (Bound va)"   and "\<And>v va. P (C v) (Neg va)"   and "\<And>v va vb. P (C v) (Add va vb)"   and "\<And>v va vb. P (C v) (Sub va vb)"   and "\<And>v va vb. P (C v) (Mul va vb)"   and "\<And>v va. P (Bound v) (C va)"   and "\<And>v va. P (Bound v) (Bound va)"   and "\<And>v va. P (Bound v) (Neg va)"   and "\<And>v va vb. P (Bound v) (Add va vb)"   and "\<And>v va vb. P (Bound v) (Sub va vb)"   and "\<And>v va vb. P (Bound v) (Mul va vb)"   and "\<And>v va. P (Neg v) (C va)"   and "\<And>v va. P (Neg v) (Bound va)"   and "\<And>v va. P (Neg v) (Neg va)"   and "\<And>v va vb. P (Neg v) (Add va vb)"   and "\<And>v va vb. P (Neg v) (Sub va vb)"   and "\<And>v va vb. P (Neg v) (Mul va vb)"   and "\<And>v va vb. P (Add v va) (C vb)"   and "\<And>v va vb. P (Add v va) (Bound vb)"   and "\<And>v va vb. P (Add v va) (Neg vb)"   and "\<And>v va vb vc. P (Add v va) (Add vb vc)"   and "\<And>v va vb vc. P (Add v va) (Sub vb vc)"   and "\<And>v va vb vc. P (Add v va) (Mul vb vc)"   and "\<And>v va vb. P (Sub v va) (C vb)"   and "\<And>v va vb. P (Sub v va) (Bound vb)"   and "\<And>v va vb. P (Sub v va) (Neg vb)"   and "\<And>v va vb vc. P (Sub v va) (Add vb vc)"   and "\<And>v va vb vc. P (Sub v va) (Sub vb vc)"   and "\<And>v va vb vc. P (Sub v va) (Mul vb vc)"   and "\<And>v va vb. P (Mul v va) (C vb)"   and "\<And>v va vb. P (Mul v va) (Bound vb)"   and "\<And>v va vb. P (Mul v va) (Neg vb)"   and "\<And>v va vb vc. P (Mul v va) (Add vb vc)"   and "\<And>v va vb vc. P (Mul v va) (Sub vb vc)"   and "\<And>v va vb vc. P (Mul v va) (Mul vb vc)"   and "\<And>va v. P (Bound va) (C v)"   and "\<And>va v. P (Neg va) (C v)"   and "\<And>va vb v. P (Add va vb) (C v)"   and "\<And>va vb v. P (Sub va vb) (C v)"   and "\<And>va vb v. P (Mul va vb) (C v)"   and "\<And>va v. P (C va) (Bound v)"   and "\<And>va v. P (Bound va) (Bound v)"   and "\<And>va v. P (Neg va) (Bound v)"   and "\<And>va vb v. P (Add va vb) (Bound v)"   and "\<And>va vb v. P (Sub va vb) (Bound v)"   and "\<And>va vb v. P (Mul va vb) (Bound v)"   and "\<And>va v. P (C va) (Neg v)"   and "\<And>va v. P (Bound va) (Neg v)"   and "\<And>va v. P (Neg va) (Neg v)"   and "\<And>va vb v. P (Add va vb) (Neg v)"   and "\<And>va vb v. P (Sub va vb) (Neg v)"   and "\<And>va vb v. P (Mul va vb) (Neg v)"   and "\<And>vb v va. P (C vb) (Add v va)"   and "\<And>vb v va. P (Bound vb) (Add v va)"   and "\<And>vb v va. P (Neg vb) (Add v va)"   and "\<And>vb vc v va. P (Add vb vc) (Add v va)"   and "\<And>vb vc v va. P (Sub vb vc) (Add v va)"   and "\<And>vb vc v va. P (Mul vb vc) (Add v va)"   and "\<And>vb v va. P (C vb) (Sub v va)"   and "\<And>vb v va. P (Bound vb) (Sub v va)"   and "\<And>vb v va. P (Neg vb) (Sub v va)"   and "\<And>vb vc v va. P (Add vb vc) (Sub v va)"   and "\<And>vb vc v va. P (Sub vb vc) (Sub v va)"   and "\<And>vb vc v va. P (Mul vb vc) (Sub v va)"   and "\<And>vb v va. P (C vb) (Mul v va)"   and "\<And>vb v va. P (Bound vb) (Mul v va)"   and "\<And>vb v va. P (Neg vb) (Mul v va)"   and "\<And>vb vc v va. P (Add vb vc) (Mul v va)"   and "\<And>vb vc v va. P (Sub vb vc) (Mul v va)"   and "\<And>vb vc v va. P (Mul vb vc) (Mul v va)" shows "P a0 a1"