induct: fixes P :: "bool \<Rightarrow> 'c rexp_dual \<Rightarrow> 'c rexp_dual \<Rightarrow> bool"   and a0 :: "bool"   and a1 :: "'c rexp_dual"   and a2 :: "'c rexp_dual" assumes "\<And>b1 b2 r. P b1 (CoZero b2) r"   and "\<And>b1 v b2. P b1 (CoOne v) (CoZero b2)"   and "\<And>b1 v va b2. P b1 (CoAtom v va) (CoZero b2)"   and "\<And>b1 v va vb b2. P b1 (CoPlus v va vb) (CoZero b2)"   and "\<And>b1 v va vb b2. P b1 (CoTimes v va vb) (CoZero b2)"   and "\<And>b1 v va b2. P b1 (CoStar v va) (CoZero b2)"   and "\<And>b1 v va b2. P b1 (CoPr v va) (CoZero b2)"   and "\<And>b1 b2 r s v. \<lbrakk>b1 = b2 \<Longrightarrow> P b2 s (CoOne v); b1 = b2 \<Longrightarrow> P b2 r (pnCoPlus b2 s (CoOne v))\<rbrakk> \<Longrightarrow> P b1 (CoPlus b2 r s) (CoOne v)"   and "\<And>b1 b2 r s v va. \<lbrakk>b1 = b2 \<Longrightarrow> P b2 s (CoAtom v va); b1 = b2 \<Longrightarrow> P b2 r (pnCoPlus b2 s (CoAtom v va))\<rbrakk> \<Longrightarrow> P b1 (CoPlus b2 r s) (CoAtom v va)"   and "\<And>b1 b2 r s v va vb. \<lbrakk>b1 = b2 \<Longrightarrow> P b2 s (CoPlus v va vb); b1 = b2 \<Longrightarrow> P b2 r (pnCoPlus b2 s (CoPlus v va vb))\<rbrakk> \<Longrightarrow> P b1 (CoPlus b2 r s) (CoPlus v va vb)"   and "\<And>b1 b2 r s v va vb. \<lbrakk>b1 = b2 \<Longrightarrow> P b2 s (CoTimes v va vb); b1 = b2 \<Longrightarrow> P b2 r (pnCoPlus b2 s (CoTimes v va vb))\<rbrakk> \<Longrightarrow> P b1 (CoPlus b2 r s) (CoTimes v va vb)"   and "\<And>b1 b2 r s v va. \<lbrakk>b1 = b2 \<Longrightarrow> P b2 s (CoStar v va); b1 = b2 \<Longrightarrow> P b2 r (pnCoPlus b2 s (CoStar v va))\<rbrakk> \<Longrightarrow> P b1 (CoPlus b2 r s) (CoStar v va)"   and "\<And>b1 b2 r s v va. \<lbrakk>b1 = b2 \<Longrightarrow> P b2 s (CoPr v va); b1 = b2 \<Longrightarrow> P b2 r (pnCoPlus b2 s (CoPr v va))\<rbrakk> \<Longrightarrow> P b1 (CoPlus b2 r s) (CoPr v va)"   and "\<And>b1 v b2 s t. (\<lbrakk>b1 = b2; CoOne v \<noteq> s; \<not> CoOne v \<le> s\<rbrakk> \<Longrightarrow> P b2 (CoOne v) t) \<Longrightarrow> P b1 (CoOne v) (CoPlus b2 s t)"   and "\<And>b1 v va b2 s t. (\<lbrakk>b1 = b2; CoAtom v va \<noteq> s; \<not> CoAtom v va \<le> s\<rbrakk> \<Longrightarrow> P b2 (CoAtom v va) t) \<Longrightarrow> P b1 (CoAtom v va) (CoPlus b2 s t)"   and "\<And>b1 v va vb b2 s t. (\<lbrakk>b1 = b2; CoTimes v va vb \<noteq> s; \<not> CoTimes v va vb \<le> s\<rbrakk> \<Longrightarrow> P b2 (CoTimes v va vb) t) \<Longrightarrow> P b1 (CoTimes v va vb) (CoPlus b2 s t)"   and "\<And>b1 v va b2 s t. (\<lbrakk>b1 = b2; CoStar v va \<noteq> s; \<not> CoStar v va \<le> s\<rbrakk> \<Longrightarrow> P b2 (CoStar v va) t) \<Longrightarrow> P b1 (CoStar v va) (CoPlus b2 s t)"   and "\<And>b1 v va b2 s t. (\<lbrakk>b1 = b2; CoPr v va \<noteq> s; \<not> CoPr v va \<le> s\<rbrakk> \<Longrightarrow> P b2 (CoPr v va) t) \<Longrightarrow> P b1 (CoPr v va) (CoPlus b2 s t)"   and "\<And>b v va. P b (CoOne v) (CoOne va)"   and "\<And>b v va vb. P b (CoOne v) (CoAtom va vb)"   and "\<And>b v va vb vc. P b (CoOne v) (CoTimes va vb vc)"   and "\<And>b v va vb. P b (CoOne v) (CoStar va vb)"   and "\<And>b v va vb. P b (CoOne v) (CoPr va vb)"   and "\<And>b v va vb. P b (CoAtom v va) (CoOne vb)"   and "\<And>b v va vb vc. P b (CoAtom v va) (CoAtom vb vc)"   and "\<And>b v va vb vc vd. P b (CoAtom v va) (CoTimes vb vc vd)"   and "\<And>b v va vb vc. P b (CoAtom v va) (CoStar vb vc)"   and "\<And>b v va vb vc. P b (CoAtom v va) (CoPr vb vc)"   and "\<And>b v va vb vc. P b (CoTimes v va vb) (CoOne vc)"   and "\<And>b v va vb vc vd. P b (CoTimes v va vb) (CoAtom vc vd)"   and "\<And>b v va vb vc vd ve. P b (CoTimes v va vb) (CoTimes vc vd ve)"   and "\<And>b v va vb vc vd. P b (CoTimes v va vb) (CoStar vc vd)"   and "\<And>b v va vb vc vd. P b (CoTimes v va vb) (CoPr vc vd)"   and "\<And>b v va vb. P b (CoStar v va) (CoOne vb)"   and "\<And>b v va vb vc. P b (CoStar v va) (CoAtom vb vc)"   and "\<And>b v va vb vc vd. P b (CoStar v va) (CoTimes vb vc vd)"   and "\<And>b v va vb vc. P b (CoStar v va) (CoStar vb vc)"   and "\<And>b v va vb vc. P b (CoStar v va) (CoPr vb vc)"   and "\<And>b v va vb. P b (CoPr v va) (CoOne vb)"   and "\<And>b v va vb vc. P b (CoPr v va) (CoAtom vb vc)"   and "\<And>b v va vb vc vd. P b (CoPr v va) (CoTimes vb vc vd)"   and "\<And>b v va vb vc. P b (CoPr v va) (CoStar vb vc)"   and "\<And>b v va vb vc. P b (CoPr v va) (CoPr vb vc)" shows "P a0 a1 a2"