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 "\<And>r s. \<lbrakk>P s Full; P r (pnPlus s Full)\<rbrakk> \<Longrightarrow> P (Plus r s) Full"   and "\<And>r s. \<lbrakk>P s One; P r (pnPlus s One)\<rbrakk> \<Longrightarrow> P (Plus r s) One"   and "\<And>r s v. \<lbrakk>P s (Atom v); P r (pnPlus s (Atom v))\<rbrakk> \<Longrightarrow> P (Plus r s) (Atom v)"   and "\<And>r s v va. \<lbrakk>P s (Plus v va); P r (pnPlus s (Plus v va))\<rbrakk> \<Longrightarrow> P (Plus r s) (Plus v va)"   and "\<And>r s v va. \<lbrakk>P s (Times v va); P r (pnPlus s (Times v va))\<rbrakk> \<Longrightarrow> P (Plus r s) (Times v va)"   and "\<And>r s v. \<lbrakk>P s (Star v); P r (pnPlus s (Star v))\<rbrakk> \<Longrightarrow> P (Plus r s) (Star v)"   and "\<And>r s v. \<lbrakk>P s (rexp.Not v); P r (pnPlus s (rexp.Not v))\<rbrakk> \<Longrightarrow> P (Plus r s) (rexp.Not v)"   and "\<And>r s v va. \<lbrakk>P s (rexp.Inter v va); P r (pnPlus s (rexp.Inter v va))\<rbrakk> \<Longrightarrow> P (Plus r s) (rexp.Inter v va)"   and "\<And>r s v. \<lbrakk>P s (Pr v); P r (pnPlus s (Pr v))\<rbrakk> \<Longrightarrow> P (Plus r s) (Pr v)"   and "\<And>s t. (\<lbrakk>Full \<noteq> s; \<not> Full \<le> s\<rbrakk> \<Longrightarrow> P Full t) \<Longrightarrow> P Full (Plus s t)"   and "\<And>s t. (\<lbrakk>One \<noteq> s; \<not> One \<le> s\<rbrakk> \<Longrightarrow> P One t) \<Longrightarrow> P One (Plus 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) (Plus 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) (Plus 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) (Plus 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) (Plus s t)"   and "\<And>v va s t. (\<lbrakk>rexp.Inter v va \<noteq> s; \<not> rexp.Inter v va \<le> s\<rbrakk> \<Longrightarrow> P (rexp.Inter v va) t) \<Longrightarrow> P (rexp.Inter v va) (Plus 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) (Plus s t)"   and "P Full Full"   and "P Full One"   and "\<And>v. P Full (Atom v)"   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 "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 va. P One (rexp.Inter v va)"   and "\<And>v. P One (Pr v)"   and "\<And>v. P (Atom v) Full"   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 vb. P (Atom v) (rexp.Inter va vb)"   and "\<And>v va. P (Atom v) (Pr va)"   and "\<And>v va. P (Times v va) Full"   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 vc. P (Times v va) (rexp.Inter vb vc)"   and "\<And>v va vb. P (Times v va) (Pr vb)"   and "\<And>v. P (Star v) Full"   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 vb. P (Star v) (rexp.Inter va vb)"   and "\<And>v va. P (Star v) (Pr va)"   and "\<And>v. P (rexp.Not v) Full"   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 vb. P (rexp.Not v) (rexp.Inter va vb)"   and "\<And>v va. P (rexp.Not v) (Pr va)"   and "\<And>v va. P (rexp.Inter v va) Full"   and "\<And>v va. P (rexp.Inter v va) One"   and "\<And>v va vb. P (rexp.Inter v va) (Atom vb)"   and "\<And>v va vb vc. P (rexp.Inter v va) (Times vb vc)"   and "\<And>v va vb. P (rexp.Inter v va) (Star vb)"   and "\<And>v va vb. P (rexp.Inter v va) (rexp.Not vb)"   and "\<And>v va vb vc. P (rexp.Inter v va) (rexp.Inter vb vc)"   and "\<And>v va vb. P (rexp.Inter v va) (Pr vb)"   and "\<And>v. P (Pr v) Full"   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 vb. P (Pr v) (rexp.Inter va vb)"   and "\<And>v va. P (Pr v) (Pr va)" shows "P a0 a1"