induct: fixes P :: "'c rexp \<Rightarrow> 'c rexp \<Rightarrow> bool"   and a0 :: "'c rexp"   and a1 :: "'c rexp" assumes "\<And>r. P Zero r"   and "P Full Zero"   and "P One Zero"   and "\<And>v. P (Atom v) Zero"   and "\<And>v va. P (Plus v va) Zero"   and "\<And>v va. P (Times v va) Zero"   and "\<And>v. P (Star v) Zero"   and "\<And>v. P (rexp.Not v) Zero"   and "\<And>v va. P (rexp.Inter v va) Zero"   and "\<And>v. P (Pr v) Zero"   and "P Full Full"   and "P Full One"   and "\<And>v. P Full (Atom v)"   and "\<And>v va. P Full (Plus v va)"   and "\<And>v va. P Full (Times v va)"   and "\<And>v. P Full (Star v)"   and "\<And>v. P Full (rexp.Not v)"   and "\<And>v va. P Full (rexp.Inter v va)"   and "\<And>v. P Full (Pr v)"   and "P One Full"   and "\<And>v. P (Atom v) Full"   and "\<And>v va. P (Plus v va) Full"   and "\<And>v va. P (Times v va) Full"   and "\<And>v. P (Star v) Full"   and "\<And>v. P (rexp.Not v) Full"   and "\<And>v va. P (rexp.Inter v va) Full"   and "\<And>v. P (Pr v) Full"   and "\<And>r s. \<lbrakk>P r One; P s One\<rbrakk> \<Longrightarrow> P (Plus r s) One"   and "\<And>r s v. \<lbrakk>P r (Atom v); P s (Atom v)\<rbrakk> \<Longrightarrow> P (Plus r s) (Atom v)"   and "\<And>r s v va. \<lbrakk>P r (Plus v va); P s (Plus v va)\<rbrakk> \<Longrightarrow> P (Plus r s) (Plus v va)"   and "\<And>r s v va. \<lbrakk>P r (Times v va); P s (Times v va)\<rbrakk> \<Longrightarrow> P (Plus r s) (Times v va)"   and "\<And>r s v. \<lbrakk>P r (Star v); P s (Star v)\<rbrakk> \<Longrightarrow> P (Plus r s) (Star v)"   and "\<And>r s v. \<lbrakk>P r (rexp.Not v); P s (rexp.Not v)\<rbrakk> \<Longrightarrow> P (Plus r s) (rexp.Not v)"   and "\<And>r s v va. \<lbrakk>P r (rexp.Inter v va); P s (rexp.Inter v va)\<rbrakk> \<Longrightarrow> P (Plus r s) (rexp.Inter v va)"   and "\<And>r s v. \<lbrakk>P r (Pr v); P s (Pr v)\<rbrakk> \<Longrightarrow> P (Plus r s) (Pr v)"   and "\<And>s t. \<lbrakk>P One s; P One t\<rbrakk> \<Longrightarrow> P One (Plus s t)"   and "\<And>v s t. \<lbrakk>P (Atom v) s; P (Atom v) t\<rbrakk> \<Longrightarrow> P (Atom v) (Plus s t)"   and "\<And>v va s t. \<lbrakk>P (Times v va) s; P (Times v va) t\<rbrakk> \<Longrightarrow> P (Times v va) (Plus s t)"   and "\<And>v s t. \<lbrakk>P (Star v) s; P (Star v) t\<rbrakk> \<Longrightarrow> P (Star v) (Plus s t)"   and "\<And>v s t. \<lbrakk>P (rexp.Not v) s; P (rexp.Not v) t\<rbrakk> \<Longrightarrow> P (rexp.Not v) (Plus s t)"   and "\<And>v va s t. \<lbrakk>P (rexp.Inter v va) s; P (rexp.Inter v va) t\<rbrakk> \<Longrightarrow> P (rexp.Inter v va) (Plus s t)"   and "\<And>v s t. \<lbrakk>P (Pr v) s; P (Pr v) t\<rbrakk> \<Longrightarrow> P (Pr v) (Plus s t)"   and "\<And>r s. \<lbrakk>P s One; P r (pnInter s One)\<rbrakk> \<Longrightarrow> P (rexp.Inter r s) One"   and "\<And>r s v. \<lbrakk>P s (Atom v); P r (pnInter s (Atom v))\<rbrakk> \<Longrightarrow> P (rexp.Inter r s) (Atom v)"   and "\<And>r s v va. \<lbrakk>P s (Times v va); P r (pnInter s (Times v va))\<rbrakk> \<Longrightarrow> P (rexp.Inter r s) (Times v va)"   and "\<And>r s v. \<lbrakk>P s (Star v); P r (pnInter s (Star v))\<rbrakk> \<Longrightarrow> P (rexp.Inter r s) (Star v)"   and "\<And>r s v. \<lbrakk>P s (rexp.Not v); P r (pnInter s (rexp.Not v))\<rbrakk> \<Longrightarrow> P (rexp.Inter r s) (rexp.Not v)"   and "\<And>r s v va. \<lbrakk>P s (rexp.Inter v va); P r (pnInter s (rexp.Inter v va))\<rbrakk> \<Longrightarrow> P (rexp.Inter r s) (rexp.Inter v va)"   and "\<And>r s v. \<lbrakk>P s (Pr v); P r (pnInter s (Pr v))\<rbrakk> \<Longrightarrow> P (rexp.Inter r s) (Pr v)"   and "\<And>s t. (\<lbrakk>One \<noteq> s; \<not> One \<le> s\<rbrakk> \<Longrightarrow> P One t) \<Longrightarrow> P One (rexp.Inter s t)"   and "\<And>v s t. (\<lbrakk>Atom v \<noteq> s; \<not> Atom v \<le> s\<rbrakk> \<Longrightarrow> P (Atom v) t) \<Longrightarrow> P (Atom v) (rexp.Inter s t)"   and "\<And>v va s t. (\<lbrakk>Times v va \<noteq> s; \<not> Times v va \<le> s\<rbrakk> \<Longrightarrow> P (Times v va) t) \<Longrightarrow> P (Times v va) (rexp.Inter s t)"   and "\<And>v s t. (\<lbrakk>Star v \<noteq> s; \<not> Star v \<le> s\<rbrakk> \<Longrightarrow> P (Star v) t) \<Longrightarrow> P (Star v) (rexp.Inter s t)"   and "\<And>v s t. (\<lbrakk>rexp.Not v \<noteq> s; \<not> rexp.Not v \<le> s\<rbrakk> \<Longrightarrow> P (rexp.Not v) t) \<Longrightarrow> P (rexp.Not v) (rexp.Inter s t)"   and "\<And>v s t. (\<lbrakk>Pr v \<noteq> s; \<not> Pr v \<le> s\<rbrakk> \<Longrightarrow> P (Pr v) t) \<Longrightarrow> P (Pr v) (rexp.Inter s t)"   and "P One One"   and "\<And>v. P One (Atom v)"   and "\<And>v va. P One (Times v va)"   and "\<And>v. P One (Star v)"   and "\<And>v. P One (rexp.Not v)"   and "\<And>v. P One (Pr v)"   and "\<And>v. P (Atom v) One"   and "\<And>v va. P (Atom v) (Atom va)"   and "\<And>v va vb. P (Atom v) (Times va vb)"   and "\<And>v va. P (Atom v) (Star va)"   and "\<And>v va. P (Atom v) (rexp.Not va)"   and "\<And>v va. P (Atom v) (Pr va)"   and "\<And>v va. P (Times v va) One"   and "\<And>v va vb. P (Times v va) (Atom vb)"   and "\<And>v va vb vc. P (Times v va) (Times vb vc)"   and "\<And>v va vb. P (Times v va) (Star vb)"   and "\<And>v va vb. P (Times v va) (rexp.Not vb)"   and "\<And>v va vb. P (Times v va) (Pr vb)"   and "\<And>v. P (Star v) One"   and "\<And>v va. P (Star v) (Atom va)"   and "\<And>v va vb. P (Star v) (Times va vb)"   and "\<And>v va. P (Star v) (Star va)"   and "\<And>v va. P (Star v) (rexp.Not va)"   and "\<And>v va. P (Star v) (Pr va)"   and "\<And>v. P (rexp.Not v) One"   and "\<And>v va. P (rexp.Not v) (Atom va)"   and "\<And>v va vb. P (rexp.Not v) (Times va vb)"   and "\<And>v va. P (rexp.Not v) (Star va)"   and "\<And>v va. P (rexp.Not v) (rexp.Not va)"   and "\<And>v va. P (rexp.Not v) (Pr va)"   and "\<And>v. P (Pr v) One"   and "\<And>v va. P (Pr v) (Atom va)"   and "\<And>v va vb. P (Pr v) (Times va vb)"   and "\<And>v va. P (Pr v) (Star va)"   and "\<And>v va. P (Pr v) (rexp.Not va)"   and "\<And>v va. P (Pr v) (Pr va)" shows "P a0 a1"